考虑
int main()
{
auto a = new int[0];
delete[] a; // So there's no memory leak
}
在复制初始化和删除之间,是否允许您读取处的指针a + 1
?
此外,该语言是否允许编译器设置a
为nullptr
?
a + 1
”时,以下代码是否为auto b = a + 1;
未定义行为?(我认为是这样)。
0
实际上是某些表达式的结果,直到运行时您才知道。由于new int[0]
是安全的,因此可以省去一些分支/特殊情况的烦恼。试想一下,如果我是来初始化std::vector
与std::vector<int> v(0);
。
a
肯定阅读(您当然不能取消引用)。