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

  • 本文关键字:有效 数组 小数 分配 c++
  • 更新时间 :
  • 英文 :


//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++不会为您检查数组边界。那是你的工作。

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

只是不要这样做。

最新更新