c++ - C++中奇怪的循环跳转

标签 c++ pointers for-loop sizeof

<分区>

我正在尝试遍历对象的指针数组,它在到达输入变量之前工作正常。它以某种方式提高了 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/

相关文章:

c++ - ProcessExit - DLL 卸载和静态的顺序

android - 升级 NDK 版本时是否应该重建所有库?

pointers - 一个人怎么能用 F# 编写 Duff 的设备?

c - 关于 C 指针的最后一件事 : confused about what this snippet of code will do?

c - 下面的控制表达式是否在 for 循环中递增?

javascript - For 循环返回 undefined variable

c++ - 获取定义为父类的子类输出子函数

c++ - 如何调整布局中的小部件?

c++ - 指针运算和积分提升

c - 二维数组的无限 for 循环