2017-08-14 20 views
0

我动态分配的数组(unsigned int n可能已被作为参数的函数传递):使用`删除[]``时,新的[0]`

int * ar = new int [n]; 

当我用它做:

delete [] ar; 

但是,n = 0会发生什么? 是否分配0int跟没有分配一样? 在这种情况下,做不好的事情发生时当我打电话delete

+2

https://stackoverflow.com/questions/1087042/c-new-int0-will-it-allocate-memory而且你确实分配了一些东西(至少用于管理你的分配的数据) - 这与不做任何事情不一样。 – deviantfan

+0

@deviantfan - 我的坏!我没有发现任何重复,因为我的表达方式是“你能删除''0'”,而你的链接表述为“你可以'新”'0“”(最后,它有点相同) 。我应该删除这个Q吗? –

+0

使用std :: vector! – 2017-08-14 20:19:22

回答

3

没关系到new一个零大小的数组,到delete它。这比任何事情都更方便,因为这意味着您不必为0情况编写单独的条件。

+0

只要你不尝试真的*使用它*任何东西;-) –

+0

_Phew!_因为我很懒惰,我一路问了一个关于这个问题,以确保我不需要为'0'编写单独的条件。 ':D' –