这已经困扰了我好一段时间了。我有一个指针。我声明了一个类型为int的数组。
int* data;
data = new int[5];
我相信这会创建一个大小为5的int数组。因此,我将能够从data [0]到data [4]存储值。
现在我以相同的方式创建数组,但是没有大小。
int* data;
data = new int;
我仍然能够将值存储在data [2]或data [3]中。但是我创建了一个大小为1的数组。这怎么可能?
我知道数据是一个指向数组第一个元素的指针。尽管我没有为下一个元素分配内存,但是我仍然可以访问它们。怎么样?
谢谢。
new int
仅分配1个整数。如果您访问的偏移量大于0,例如data[1]
您覆盖内存。