【发布时间】:2011-03-17 21:47:34
【问题描述】:
这是WTF城市。
下面的程序在几千次循环后崩溃了。
unsigned long int nTurn = 1;
bool quit = false;
int main(){
while(!quit){
doTurn();
++nTurn;
}
}
当然,这是从我的游戏中简化的,但是 nTurn 目前在无处使用,但是它的增量,当我注释掉 ++nTurn 行时,程序将可靠地循环永远。不应该是数百万吗?
WTF,堆栈溢出?
【问题讨论】:
-
请提供更多信息。崩溃代码是在
main中,还是在类方法中?doTurn()是做什么的?它的声明是什么?当您在调试器中运行程序时,究竟是哪一行崩溃了? “崩溃”是什么意思?在不了解其他情况的情况下,我的猜测是上面的代码实际上是在一个方法中,而this已经被一段无关代码中的野指针破坏了。 -
doTurn()内部发生了什么。里面的东西可能在堆栈/堆上乱涂乱画。 -
nTurn还用在什么地方?你需要它做什么? -
doTurn() 遍历一组中的多个类实例以运行其简单的随机漫游功能 - 增量是在按键触发的“移动播放器”功能中。即使我将它移到 main() 也会发生崩溃,如果我删除 ++nTurn,游戏将永远在怪物中徘徊
-
我还没有使用 nTurn - 但我需要计算转数。如果是内存分配问题,我是否应该从 4,000,000 开始 nTurn 并从中减去,然后通过 4mil - nTurn 确定轮数?或者这不会改变事情吗
标签: c++ variables crash integer