【问题标题】:Use `delete []` when `new [0]` [duplicate]当`new [0]`时使用`delete []` [重复]
【发布时间】:2018-01-22 17:47:30
【问题描述】:

我动态分配了一个数组(unsigned int n 可能已作为函数中的参数传递):

int * ar = new int [n];

当我用完它时:

delete [] ar;

但是,n = 0 会发生什么? allocate 0 ints 和根本不分配一样吗? 在这种情况下,当我打电话给delete 时会发生坏事吗?

【问题讨论】:

  • stackoverflow.com/questions/1087042/… 你确实分配了一些东西(至少用于管理你的分配的数据)——这和什么都不做是不一样的。
  • @deviantfan -- 我的错!我没有找到任何重复的内容,因为我的措辞是“你能delete 0”,而你的链接将它写成“你能new0”(最后,这有点像) .我应该删除这个 Q 吗?
  • 使用 std::vector!
  • @FineMan 我不认为你可以......无论如何,重复至少有助于其他人找到这个,然后点击链接。你也在这里得到了答案。不用担心。
  • @deviantfan -- 好点。 :)

标签: c++ arrays memory-management dynamic


【解决方案1】:

可以new 一个零大小的数组,delete 它。这比什么都方便,因为这意味着您不必为 0 案例编写单独的条件。

【讨论】:

  • 只要你不尝试真正使用它做任何事情;-)
  • 唷!因为我很懒,所以特地去问了一个关于SO的Q,以确保我不需要为@987654324写单独的条件@。 :D
猜你喜欢
  • 2016-09-02
  • 2014-12-28
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2012-04-15
  • 2017-12-07
相关资源
最近更新 更多