如果我们分配一个大小为 1 的对象,如下所示
int *arr = new int[1];
operator delete[]
我们应该使用or删除对象operator delete
吗?
我担心的原因是编译器是否足够聪明,可以将语句转换为单个元素分配int *arr = new int
,这会导致调用operator delete[]
UB。
用户案例:
我有一个指针,我最终会以多种方式分配它,但最终希望将其删除。所以想知道,对于单元素分配,如果我一直使用,我是否int *arr = new int[1]
可以一直安全地使用operator delete[]
笔记
您能否请我参考标准以支持您的答案?