【发布时间】:2013-06-29 11:16:07
【问题描述】:
我的问题位于我的代码注释中:
int* a = new int[0];// I've expected the nullptr according to my logic...
bool is_nullptr = !a; // I got 'false'
delete[] a; // Will I get the memory leaks, if I comment this row?
谢谢。
【问题讨论】:
-
@Kolyunya 通常没有人会,但是如果大小是一个可以为零的变量呢?
-
这个问题的实际方面也很有趣。分配 0 字节有什么实际用途吗?还是只是一个概念问题?
-
是的,如果你调用 malloc(0),你会得到一个有效的指针(你显然不应该尝试写入)。你确实需要“释放”它。新建/删除也是如此。
-
@selbie 调用
malloc(0)可能会返回一个可以传递给free的有效指针,也可能返回NULL。它是实现定义的。 -
@Kolyunya 我的意思是如果你有一个变量的大小,它来自某个地方(文件、用户、数据库等)并且你使用该变量进行分配。如果您不必为零大小添加特殊情况,代码很可能会更容易编写。
标签: c++ memory-leaks new-operator