我应该释放0大小的动态数组吗?

时间:2020-02-27 20:41:20

标签: c++ dynamic-arrays

您好,我有一个简单的示例:由于C ++允许类型为T的0大小的动态数组,那么如何释放它呢?

a = new int[0];
delete[] a;// UB?

正如您在上面看到的,C ++编译器现在不再涉及动态数组的大小,因此它可以为0,因此代码可以正常工作。我也知道该数组a用作过去的指针,因此它既不能被取消引用也不能被递增/递减。

  • 我不知道在这种情况下,运算符new的幕后发生了什么?是否分配内存?还是失败?

  • 如果我不使用delete[] a;释放此内存,这是内存泄漏吗?

  • 是否可以分配给它,例如:a = new int[10];

0 个答案:

没有答案