分配新的零大小数组可以具有有效价值吗?

allocate new Zero-sized array can have effective value?

本文关键字:有效 数组 小数 分配      更新时间:2023-10-16

//new T[0] 分配一个零大小的数组可以有值吗?

auto pv=new int[0];
cout<<pv<<endl; //0x... ?
*pv=123;
cout<<*pv<<endl; //123 ?
delete[] pv;

为什么? 如果是这样,新T[0]和新T[1]有什么区别

为什么我可以设置 0 大小数组的值...?

创建一个new int[0]是合法的(尽管乍一看它可能没有用!

但是,您对它的使用就像任何其他缓冲区溢出一样:您的程序具有未定义的行为。

C++不会为您检查数组边界。那是你的工作。

越过它们似乎有效;它可能导致崩溃;它可以瞬间将太阳运送到银河系的另一部分。

只是不要这样做。