<分区>
我正在尝试遍历对象的指针数组,它在到达输入变量之前工作正常。它以某种方式提高了 size 变量并一直这样做,直到应用程序崩溃。是什么导致了这种奇怪的行为?
Array::Array(int in)
{
size = in;
Heltal *h[sizeof(size)];
for(int i = 0; i < size; i++){
h[i] = new Heltal(Array::Random(1, 100));
}
}
<分区>
我正在尝试遍历对象的指针数组,它在到达输入变量之前工作正常。它以某种方式提高了 size 变量并一直这样做,直到应用程序崩溃。是什么导致了这种奇怪的行为?
Array::Array(int in)
{
size = in;
Heltal *h[sizeof(size)];
for(int i = 0; i < size; i++){
h[i] = new Heltal(Array::Random(1, 100));
}
}
最佳答案
替换这一行:
Heltal *h[sizeof(size)];
有了这个:
std::vector<Heltal *> h(size);
sizeof(size)
是一个编译时常量,计算出 size
声明为的类型的长度(以字节为单位)。这可能是 4 的值,这意味着 h
的长度始终为 4 个元素。结果,您可能会溢出数组。
vector 构造函数将改为在堆上分配动态数量的元素。
关于c++ - C++中奇怪的循环跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637325/