記憶體洩露問題

2021-09-30 05:17:53 字數 710 閱讀 2627

記憶體洩露是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指標指向...