奇怪的循环跳跃C++
Strange loop jump in C++
我正在尝试遍历对象的指针数组,在到达输入变量之前它工作得很好。不知何故,它会提高大小变量并一直这样做,直到应用程序崩溃。是什么导致了这种奇怪的行为?
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 个元素长。 因此,您可能会使数组溢出。
向量构造函数将在堆上分配动态数量的元素。
我不知道
你认为sizeof()
做什么,但它所做的是返回变量size
的大小,我猜这是int
,所以它可能返回4
。这样做的结果是数组的大小是根据int
的大小而不是基于in
的值来确定的。
在 C99 中,我会说使用 Heltal *h[size]
,但C++不允许这样做。在这种情况下,我建议只使用std::vector<Heltal*>
并根据需要调整其大小。
相关文章:
- 检查是否至少设置了一点而不跳跃
- 如何使用训练的跳跃模型预测单词?
- 与其他输入相比,达到 65535 时的性能大幅跳跃
- TCS 模拟生活 2019 第 2 轮问题:跳跃游戏
- 瓦尔格林德有条件跳跃
- 是否有针对跳跃二进制搜索的直观解释
- 跳跃游戏中嵌套的循环问题
- 跳棋多跳跃计数算法
- Valgrind抱怨使用有条件跳跃,这些跳跃取决于非初始化的字节
- GCC 5.4.0的一次昂贵的跳跃
- 如何通过 zeromq 发送包含 \0 的序列化跳跃运动帧?
- C 计数跳跃范围末端
- 奇怪的循环跳跃C++
- 玩家跳跃的问题
- LLVM中直接跳跃的分支指令
- 在角色上跳跃功能
- 游戏跳跃逻辑
- 带有字符* 和 << 运算符的条件跳跃瓦尔格林德
- 助推::精神部分跳跃
- 无法在跳跃中为数组赋值