首页 > 解决方案 > 指向零长度数组的指针的属性

问题描述

考虑

int main()
{
    auto a = new int[0];
    delete[] a; // So there's no memory leak
}

在复制初始化和删除之间,您可以读取指针a + 1吗?

此外,该语言是否允许编译器设置anullptr

标签: c++language-lawyer

解决方案


根据编辑问题 3178的结果,最近 CWG 反射器讨论new int[0]产生了当前所谓的“过去的”指针值

因此a不能为空,并且a + 1未由[expr.add]/4定义。


推荐阅读