[問題] 關於0XC0000005

看板C_and_CPP作者 (哇哈哈)時間15年前 (2010/10/19 20:32), 編輯推噓9(9024)
留言33則, 10人參與, 最新討論串1/1
請問一個剛剛碰到的問題,就如文章標題所顯示的,我遇到了0xc0000005的問題, 根據Google的結果,這有可能是指標指出陣列大小所產生的,或者是變數沒給初值, 後來我從新check一次,陣列大小"似乎"沒設錯,而變數的初值都給了,整數給0, 指標給NULL (extern的global value除外,因為會導致重複定義的問題)。後來再從新 執行一次,還是遇到同樣的問題。比較麻煩的是遇到這種錯誤似乎會停在發生錯誤的 中斷點,可是我一直找不到那個中斷點在哪邊,反組譯碼又看不懂。用逐步執行, 發現連最基本的main檔都進不去!我想說問題可能發生在main檔之前的include的 Header檔,但是從新check過後無誤。想請問這還有什麼可能會造成0xc0000005的情況? PS.逐步執行(F10)還沒進入main檔就發生0xc0000005,有趣的是如果是按F5,我的程式 會跑個幾圈才錯(假設整個程式要跑100次,會跑到第13次才出現0xc0000005), 如果按F10會連一次都沒跑完就出現0xc0000005,之所以會知道是因為我程式每跑完 一圈就會印出一行字,我確定按F5會印出13行的文字才做這樣的推測。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.211.167

10/19 20:38, , 1F
給code吧
10/19 20:38, 1F

10/19 20:41, , 2F
任何為法的記憶體存取,都會造成
10/19 20:41, 2F

10/19 20:41, , 3F
違法
10/19 20:41, 3F

10/19 20:43, , 4F
他有說某個記憶體位址錯誤,能否從那個記憶體位址去
10/19 20:43, 4F

10/19 20:44, , 5F
trace說是哪個陣列之類的,至少我debug也比較好處理~
10/19 20:44, 5F

10/19 20:45, , 6F
如果是違法的記憶體存取,可以看出哪個陣列的記憶體存取
10/19 20:45, 6F

10/19 20:45, , 7F
違法嗎?
10/19 20:45, 7F

10/19 20:46, , 8F
如果你要去研究每個陣列的位址就可以找到... 只是有點累
10/19 20:46, 8F

10/19 20:48, , 9F
如果可以的話就擺code上來吧 這種情況我也很好奇
10/19 20:48, 9F

10/19 20:51, , 10F
貼code+1 我在看到code前先猜猜看是區域陣列太大/太小?
10/19 20:51, 10F

10/19 20:52, , 11F
char* c=0xc0000005; *c='a';
10/19 20:52, 11F

10/19 20:52, , 12F
Visual Studio 在你按 F5 出現違法存取時,跳出的視窗
10/19 20:52, 12F

10/19 20:52, , 13F
可以選「中斷」,按下後就會停在問題處。你提供的資訊太少
10/19 20:52, 13F

10/19 20:55, , 14F
選擇中斷後,他完全沒有停留在任何地方XD,所以我才想是連
10/19 20:55, 14F

10/19 20:55, , 15F
程式裡有用指標嗎?
10/19 20:55, 15F

10/19 20:56, , 16F
main都進不去,不過反組譯碼到是有停留在某個地方XD
10/19 20:56, 16F

10/19 20:57, , 17F
那可能 kernel mode 的程式碼,沒辦法中斷在裡面
10/19 20:57, 17F

10/19 20:57, , 18F
比如你傳錯的參數給Win API去執行,就有可能,可看呼叫堆
10/19 20:57, 18F

10/19 20:57, , 19F
10/19 20:57, 19F

10/19 20:58, , 20F
To eric大:程式裡有使用指標
10/19 20:58, 20F

10/19 21:00, , 21F
程式的部分有點龐大(1X個C檔,4個.h檔),總共應該有破萬行
10/19 21:00, 21F

10/19 21:01, , 22F
請各位大大幫我看怕有點不好意思
10/19 21:01, 22F

10/19 21:02, , 23F
那貼執行檔也可以
10/19 21:02, 23F

10/19 21:02, , 24F
那就建議你修剪你的程式碼 把不相干的部份暫時砍掉
10/19 21:02, 24F

10/19 21:02, , 25F
慢慢找到錯誤的地方了...
10/19 21:02, 25F

10/19 21:03, , 26F
其實破萬行 整個專案壓縮擺上來也可以啦...
10/19 21:03, 26F

10/19 21:22, , 27F
把外部變數、全域變數再檢查一次吧
10/19 21:22, 27F

10/19 21:42, , 28F
debug板 @_@
10/19 21:42, 28F

10/20 00:35, , 29F
你存取到某個指向null的指標
10/20 00:35, 29F

10/20 00:36, , 30F
如果每次都跑到第13次出錯你就找找有沒有大於13次的迴圈
10/20 00:36, 30F

10/20 00:36, , 31F
如果不是你就找找有用到亂數的地方 或存取檔案
10/20 00:36, 31F

10/20 10:25, , 32F
compile 有加 debug info 嗎 ? step trace 總可以吧 ?
10/20 10:25, 32F

10/20 10:26, , 33F
真的還不行的話就加 log (記得 flush), 看掛在哪裡了
10/20 10:26, 33F
文章代碼(AID): #1ClO_qDm (C_and_CPP)