[英]c++ crashing on incrementing an unsigned long int
這是WTF城市。
幾千次循環后,以下程序崩潰。
unsigned long int nTurn = 1;
bool quit = false;
int main(){
while(!quit){
doTurn();
++nTurn;
}
}
當然,這是從我的游戲中簡化的,但是nTurn目前僅在增加它的地方使用,當我注釋掉++ nTurn行時,該程序將永遠可靠地循環。 它不應該成千上萬嗎?
WTF,stackoverflow?
您的問題在其他地方。
程序的其他部分正在讀取通配指針,該指針最終指向nTurn
,當此循環更改值時,其他代碼將執行不同的操作。 或存在比賽條件,增量會使此循環花費一點點時間,因此不會引起麻煩的事情。 您可能在其他地方犯了無數錯誤。
您可以在valgrind下運行程序嗎? 它不會發現某些錯誤,但會發現很多錯誤。
聽起來可能很愚蠢,但是,如果我正在看這個,我可能會輸出nTurn var,看看它是否總是在值上崩潰。 然后,也許初始化nTurn到那,看看是否還會導致它。 您總是可以將其放入調試程序,並查看各種寄存器等發生的情況。 您是否嘗試過其他編譯器?
我將使用調試器來捕獲故障並查看nTurn的值。 或者,如果您從崩潰中提取了核心轉儲,則將其加載到調試器中以在崩潰時查看var值。
還有一點,問題可能出在nTurn繞回並變為零時嗎?
++ nTurn不能直接導致崩潰。 您可能會有某種緩沖區溢出,導致不應使用指針算術訪問nTurn變量的內存。 與增量結合使用時,將導致異常行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.