作者bonoshi (sbo)
看板EE_DSnP
標題[問題] 請教一些經驗(關於一些bug)
時間Mon Jan 19 22:45:01 2009
想請教對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
1F:推 MrOrz:2. 應該是windows在釋放程式所佔的所有記憶體時出現的error 01/20 00:59
2F:→ MrOrz: 檢查一下物件的destructor,或是有沒有 double free之類? 01/20 00:59
3F:→ MrOrz: 應該是這樣吧XD" 01/20 00:59
4F:推 wintercobra:所以平常在執行軟體的時候,出現這個錯誤訊息 01/20 10:28
5F:→ wintercobra:就有可能是那個軟體本身沒寫好囉? 01/20 10:28
6F:→ bonoshi:謝謝樓上兩位,後來今天早上解決了,是因為有些陣列沒有設 01/20 12:14
7F:→ bonoshi:成NULL,造成dereference之後的問題。不過非常令人不解的 01/20 12:14
8F:→ bonoshi:是當程式結束後才出現錯誤訊息,執行時都不會有。 01/20 12:15
9F:→ bonoshi:這點真的很奇怪… 01/20 12:15
10F:→ bonoshi:補充一下,我是在dereference前檢查是不是NULL。但因為沒 01/20 12:16
11F:→ bonoshi:有處理好,二維陣列的最後一列沒有設成NULL,所以才有這些 01/20 12:17
12F:→ bonoshi:潛在的問題。感謝兩位! 01/20 12:17