快樂蝦
本文適用於
wxwidgets-2.8.8
vs2008
windows xp
在使用wxflatnotebook時發生乙個很奇怪的記憶體洩漏:
m_pnotebook = new::wxflatnotebook(this, wxid_nbmain);
deletem_pnotebook;
即使這樣的**,依然會有記憶體洩漏。
看了乙個wxflatnotebook的建構函式,發現只要一建立
wxpagecontainer,就會有記憶體洩漏,轉而懷疑wxpagecontainer的問題,試了一下下面的**:
::wxpagecontainer* p = new::wxpagecontainer(this);
deletep;
果然,記憶體洩漏。看看wxpagecontainer的建構函式,並沒有發現什麼特別的東西,猜測是它的訊息處理出了問題,遮蔽wxpagecontainer的所有訊息處理,再逐個開啟,發現在處理
wm_on_size
訊息時造成了記憶體洩漏,看看它的**:
voidwxpagecontainer::onsize(wxsizeevent& wxunused(event))
範圍進一步縮小到wxfnbrenderermgrst::get()函式,它的**:
typedefwxfnbsingletonwxfnbrenderermgrst;
template
t* wxfnbsingleton::get()
哈哈,ms_instance是動態分配的,這是個什麼東西?
template
t* wxfnbsingleton::ms_instance = 0;
原來是個靜態變數,那麼它是什麼時候釋放的?
template
voidwxfnbsingleton::free()
} 那麼誰來呼叫這個函式?
voidwxflatnotebook::cleanup()
這個也是個靜態函式,從函式名稱和wxfnbsingleton::ms_instance這個靜態變數可以猜測,在應用程式退出或者不再使用
wxflatnotebook
時,應用程式應該主動呼叫wxflatnotebook::cleanup函式來釋放記憶體。
兜了一圈,原來如此!遺憾的是wxflatnotebook自帶的demo居然也沒有在最後呼叫此函式,因此也有記憶體洩漏的現象發生!
container of 的的的原理
另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...
存在的就是合理的,發生的即是必然的。
筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...
Apache的rewrite的重寫相關的引數
apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...