我做過一個專案,需要使用 LinkedList 計算非常大數字的乘法。但是,即使我得到了正確的答案,我也收到了一條錯誤訊息。
行程完成,退出代碼 -1073741819 (0xC0000005)
每當其中一個數字非常大時,就會發生這種情況。我查看了舊帖子,但找不到與我的情況類似的內容。
以下是示例輸出。
帶錯誤代碼的 示例 不帶錯誤代碼的示例
我將數字存盤在 LinkedList 中作為數字。所以,每個節點都有一個數字,我猜應該沒有關于 int/long 的任何問題,但我找不到是什么造成的。當我除錯代碼時,我在代碼末尾得到錯誤指標,這里沒有代碼。 除錯
我希望我能正確解釋我的問題,提前致謝。
uj5u.com熱心網友回復:
錯誤代碼0xC0000005在 Microsoft Windows 中的意思是“訪問沖突”,相當于 Linux 的“分段錯誤”。
問題可能是以下代碼:
char num1[] = "";
[...]
printf( "Num1: " );
gets( num1 );
如果用戶輸入的不是空行,這將導致緩沖區溢位。那是因為陣列num1只有一個字符的空間(空終止字符已經需要)。
我建議您改用以下代碼:
char num1[100];
[...]
printf( "Num1: " );
fgets( num1, sizeof num1, stdin );
相關的代碼num2有同樣的問題。
我強烈建議您閱讀以下內容:
為什么gets 函式如此危險以至于不應該使用它?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335250.html
