我正在創建一個窗口C++類,並且在註冊窗口類時爲每個創建的窗口(使用WNDCLASSEX結構的cbWndExtra等)使用額外的字節。 Does :: DestroyWindow(..)釋放分配的窗口的額外字節嗎?從窗口的額外字節泄漏內存?
看來,當我創建並銷燬循環中的許多窗口對象時,我的應用程序在任務管理器中的「提交大小」上升。
我的C++類不分配任何內存,而且它沒有控件/工具欄/菜單,它似乎沒有泄漏任何GDI對象或類似的東西,所以我懷疑它是額外的字節窗戶。
有沒有人有什麼想法可以出錯?
是否有一些API我應該調用釋放額外的字節?
在銷燬使用額外字節的窗口時,您還有其他事情要做嗎?
編輯: 我曾嘗試創建使用額外的字節的具體類的只是一個單一的窗口,並在循環中破壞它,並再次,我的應用程序的提交大小上升。我也等了幾個小時,提交量沒有減少。 額外的字節只包含一個指向表示窗口的對象的指針。該對象被破壞(它在循環中被靜態創建)。 無論如何,它似乎不是我的錯,它甚至可能不是Windows的一個bug(正如你所說 - 雖然我不是100%確定),所以我即將離開它...
如果你沒有分配任何內存,並且你銷燬了所有的窗口,那麼就沒有泄漏。 –
Windows中的內存管理太複雜了,無法從簡單的統計信息(如Commit大小)進行反向工程。使用分析器。只有當你運行一週後才能真正讓程序在OOM上轟炸時,你纔會感到困擾。或者一個或兩個單元測試。 –