我动态分配的数组(unsigned int n
可能已被作为参数的函数传递):使用`删除[]``时,新的[0]`
int * ar = new int [n];
当我用它做:
delete [] ar;
但是,n = 0
会发生什么? 是否分配0
int
跟没有分配一样? 在这种情况下,做不好的事情发生时当我打电话delete
?
我动态分配的数组(unsigned int n
可能已被作为参数的函数传递):使用`删除[]``时,新的[0]`
int * ar = new int [n];
当我用它做:
delete [] ar;
但是,n = 0
会发生什么? 是否分配0
int
跟没有分配一样? 在这种情况下,做不好的事情发生时当我打电话delete
?
没关系到new
一个零大小的数组,到delete
它。这比任何事情都更方便,因为这意味着您不必为0
情况编写单独的条件。
只要你不尝试真的*使用它*任何东西;-) –
_Phew!_因为我很懒惰,我一路问了一个关于这个问题,以确保我不需要为'0'编写单独的条件。 ':D' –
https://stackoverflow.com/questions/1087042/c-new-int0-will-it-allocate-memory而且你确实分配了一些东西(至少用于管理你的分配的数据) - 这与不做任何事情不一样。 – deviantfan
@deviantfan - 我的坏!我没有发现任何重复,因为我的表达方式是“你能删除''0'”,而你的链接表述为“你可以'新”'0“”(最后,它有点相同) 。我应该删除这个Q吗? –
使用std :: vector! – 2017-08-14 20:19:22