关于new分配空间时size = 0
如题
最近遇到了这个问题,不知道这个size为零的情况,给分配空间吗?
我自己做的程序测试没有报错.
linux C++;
int *pInt = new(int[0]);
if(NULL == pInt)
{
fprintf(stderr,"new pInt memory failure\n");
}
printf("pInt = %d ; pIntsize =%d ; *pInt = %p\n", *pInt , sizeof(pInt), pInt);
结果
pInt = 0 ; pIntsize =4 ; *pInt = 0x82b1008
这个内存地址可以用吗?大小是0啊?
C++
[解决办法]
没报错不代表没有错.
不可以为0
[解决办法]
语法没错,语义没有。
[解决办法]
此时new返回有效地非零指针,与其他指针不同,该指针不能进行解引用操作,因为它没有指向任何元素,可以对该指针进行比较运算,因此可以在循环中使用;在该指针上加0或者减去本身得0值。
------------------以上是c++ primer中的内容