使用新数组创建而不声明大小-c ++

问题描述 投票:0回答:1

这已经困扰了我好一段时间了。我有一个指针。我声明了一个类型为int的数组。

int* data;
data = new int[5];

我相信这会创建一个大小为5的int数组。因此,我将能够从data [0]到data [4]存储值。

现在我以相同的方式创建数组,但是没有大小。

int* data;
data = new int;

我仍然能够将值存储在data [2]或data [3]中。但是我创建了一个大小为1的数组。这怎么可能?

我知道数据是一个指向数组第一个元素的指针。尽管我没有为下一个元素分配内存,但是我仍然可以访问它们。怎么样?

谢谢。

c++ arrays new-operator
1个回答
1
投票

new int仅分配1个整数。如果您访问的偏移量大于0,例如data[1]您覆盖内存。

© www.soinside.com 2019 - 2024. All rights reserved.