【发布时间】:2020-08-29 15:15:33
【问题描述】:
// new T[0] 分配一个大小为零的数组可以有值吗?
auto pv=new int[0];
cout<<pv<<endl; //0x... ?
*pv=123;
cout<<*pv<<endl; //123 ?
delete[] pv;
为什么? 如果是这样,new T[0] 和 new T[1] 有什么区别
为什么我可以设置 0 大小的数组的值...?
【问题讨论】:
-
你正在使用指针算法在相邻的内存上涂鸦
-
这能回答你的问题吗? C++ new int[0] -- will it allocate memory?
-
@RoQuOTriX 不是;不管有没有分配内存,
pv[0]逻辑上都是越界的。 -
它真的分配了内存吗?
-
@Larry 为了维护编译器的堆数据结构,它可能会分配内存,但这仅用于结构的内部。
标签: c++