重载operator new,当size==0时的处理
我很早以前写了一套内存分配的代码今天终于出问题了.
因为我没有在 operator new 里处理 size==0 的情况 :(
而 stl 里出现了 new(0).
真应该早点看 effctive c++ ;)
不过 effctive c++ 里简单的把 size==0 的情况当 size=1 处理.
当然这没有问题.
只是, 我觉得, 当需要分配 0 byte 的时候, 直接返回 NULL 似乎也没有错.
因为那个指针是不能写的呀.
请问, 如果我直接在请求 0 byte 时候, 返回 NULL, 有没有什么隐患呢?
因为我没有在 operator new 里处理 size==0 的情况 :(
而 stl 里出现了 new(0).
真应该早点看 effctive c++ ;)
不过 effctive c++ 里简单的把 size==0 的情况当 size=1 处理.
当然这没有问题.
只是, 我觉得, 当需要分配 0 byte 的时候, 直接返回 NULL 似乎也没有错.
因为那个指针是不能写的呀.
请问, 如果我直接在请求 0 byte 时候, 返回 NULL, 有没有什么隐患呢?
...全文
相关推荐
让vc6支持new 抛出异常
```cppvoid* operator new(size_t size) { void* ptr = ::HeapAlloc(GetProcessHeap(), 0, size); if (ptr =
C++内存泄露 是啊 艾丝凡阿萨
```cppvoid* operator new(size_t Size, char* FileName, int LineNum) { if (Size == (size_t)0) Size = 1;
新建 WinRAR ZIP 压缩文件_运算符重载_
= 2; int* newData = new int[capacity]; for (int i = 0; i < size; ++i) { newData[i] = data[i]; } delete
C++自定义string字符串类
具体实现每个操作时,需要考虑内存管理、错误处理和效率优化。
C与C++中的异常处理
```cppvoid* operator new(size_t size) throw(std::bad_alloc) { void* ptr = malloc(size); if (!


