读书人

覆盖全局的operator new,什么时候会分

发布时间: 2012-05-16 11:12:12 作者: rapoo

覆盖全局的operator new,什么时候会分配0个字节?
网上对于全局operator new的重载一般都说有6种形式,最基本的一种是:

C/C++ code
void* operator new( size_t size ){    cout<<size<<endl;    if(0 == size){//什么时候会分配0字节? 似乎不可能啊         return 0;    }    void *p = malloc(size);    return p;}


什么时候调用一个new操作符号,可能传入的参数是0? 有这样的情况吗?
我怎么觉得这个判断有点多余啊。

[解决办法]
估计是为了把malloc的这个bug给修复了吧。看下面这个代码,居然malloc了0字节的内存。只是在上面的函数中能够防止这个误会了
C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){    int *p=NULL;    p = (int *)malloc(0);    if (p==NULL)    {        printf("OK\n");        return -1;    }    else    {        printf("ERROR\n");        free(p);    }    return 0;}
[解决办法]
这是网上写的,又不是C++委员会写的,信他得不到永生。

读书人网 >C++

热点推荐