您好,我有一个简单的示例:由于C ++允许类型为T
的0大小的动态数组,那么如何释放它呢?
a = new int[0];
delete[] a;// UB?
正如您在上面看到的,C ++编译器现在不再涉及动态数组的大小,因此它可以为0
,因此代码可以正常工作。我也知道该数组a
用作过去的指针,因此它既不能被取消引用也不能被递增/递减。
我不知道在这种情况下,运算符new
的幕后发生了什么?是否分配内存?还是失败?
如果我不使用delete[] a;
释放此内存,这是内存泄漏吗?
是否可以分配给它,例如:a = new int[10];
?