这个问题在这里已经有了答案:
C++ new int[0] -- will it allocate memory?
(6 个回答)
1年前关闭。
//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]
是合法的(虽然乍一看它可能看起来没有用!)。
但是,您对它的使用就像任何其他缓冲区溢出一样:your program has undefined behaviour .
C++ 不会为您检查数组边界。那是你的工作。
越过它们似乎可行;它可能导致崩溃;它可以瞬间将太阳传送到银河系的另一部分。
只是不要这样做。
关于c++ - allocate new 零大小数组能有有效值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61774456/