看板 EE_DSnP 關於我們 聯絡資訊
想請教對debug有經驗的人 或者是對compiler比較瞭解的人 其實今天遇到了好幾個bug… 除了之前po的那篇外 另外還有兩個目前無解的 1. 是#define的問題 我們都知道compiler內建的標頭檔中 有時會有#define 如果和自己不幸define了和它一樣的東西 應該會有問題(是嗎?) 但是如果不一樣 可能也有問題 我舉個例子 include<devc++.h> //裡面有#define RANGE 200 ....... ....... #define MY_RANGE 300 //這是我的#define ....... ....... main(){ if( MY_RANGE != 300) cout << "not equal" << endl; } 按照這個例子 想請問以下的情形會不會發生: compiler先執行#define RANGE 200 將MY_RANGE的RANGE變成200 MY_RANGE就變成新變數MY_200 會嗎? 2. 想請問我的程式一開始執行都ok 用到一半按視窗右上角的叉叉直接關掉視窗後 才出現某某記憶體不能為read… 這樣依照各位的經驗 可能發生的原因是什麼? (問題可能出在哪裡?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.240.71
MrOrz:2. 應該是windows在釋放程式所佔的所有記憶體時出現的error 01/20 00:59
MrOrz: 檢查一下物件的destructor,或是有沒有 double free之類? 01/20 00:59
MrOrz: 應該是這樣吧XD" 01/20 00:59
wintercobra:所以平常在執行軟體的時候,出現這個錯誤訊息 01/20 10:28
wintercobra:就有可能是那個軟體本身沒寫好囉? 01/20 10:28
bonoshi:謝謝樓上兩位,後來今天早上解決了,是因為有些陣列沒有設 01/20 12:14
bonoshi:成NULL,造成dereference之後的問題。不過非常令人不解的 01/20 12:14
bonoshi:是當程式結束後才出現錯誤訊息,執行時都不會有。 01/20 12:15
bonoshi:這點真的很奇怪… 01/20 12:15
bonoshi:補充一下,我是在dereference前檢查是不是NULL。但因為沒 01/20 12:16
bonoshi:有處理好,二維陣列的最後一列沒有設成NULL,所以才有這些 01/20 12:17
bonoshi:潛在的問題。感謝兩位! 01/20 12:17
muxiv: 所以平常在執行軟體的時 https://noxiv.com 07/12 00:10