記憶體洩露是vc中自我認為比較難於解決的問題之一(至少現在解決起來很麻煩了)。今天用boundschecker除錯了一下原來自己寫的程式,呵呵!居然提示記憶體洩露40位元組。看到了洩露的**的位置,一處new的地方,由於程式寫過很長時間了,所以想不起來了,乾脆模擬一下吧!
程式中第一了乙個結構體,用於儲存資料;大致是這樣吧!
typedef struct para
double a;
cstring b;
} objpara,*pobjpara;
然後在主程式中宣告了,cptrarray m_objarray;
然後在函式1中呼叫,
pobjpara p;
p=new para;
m_objarray.add(p);
之後在函式2中應用m_objarray提供的資料。
造成記憶體洩露。
這樣的問題很常見吧!這裡主要原因是分配的位址,在函式1中是不能釋放的,而應該在函式2中使用完後進行釋放,這樣就需要考慮是在函式2中直接釋放還是在類的析構函式中進行處理了。隨情況而定了。
對於集合類的資料釋放。一般採用下面的**了
if(m_objarray.getsize()>0)
for(int i=0;ipobjpara p=(pobjpara)m_objarray.getat(i);
delete p;
就到這裡吧!記著需要對這樣的相似問題進行同樣的處理。
記憶體洩露問題
下面是乙個影象去霧的程式,主函式簡略如下,看一下下面的 有何問題。int main cvreleasecapture capture cvdestroywindow result return 0 大致說一下一些fast dahaze是乙個去霧類,負責影象處理,儲存等。程式看起來很簡單,主迴圈裡面做...
GDI記憶體洩露問題
在windows系列上做程式設計,gdi是乙個很重要的技術點,有很多程式在執行多次後出現異常,除了眾所周知的記憶體洩露以外,gdi資源洩露也是乙個很直接的原因.今天就把我自己在程式設計中總結的一些經驗給大家分享,歡迎高手補充.1.create出來的gdi物件,一定要用deleteobject來釋放,...
iOS 記憶體洩露問題
記憶體洩露 1.如果在 非arc 下面三行 就出現的記憶體洩露 person person1 person alloc init person person2 person alloc init person1 person2 person1 person2 位址不一樣,這樣把person1指標指向...