簡體   English   中英

刪除GDIPlus位圖不能減少內存使用量

[英]Deleting GDIPlus Bitmap cannot reduce memory usage

我有一個新位圖的代碼,但是當我使用delete時,任務管理器中的內存使用不會減少。

我的代碼如下

Bitmap* pBuffer = new Bitmap(pMainImage->GetWidth(),  pMainImage->GetHeight());
delete pBuffer;

如何適當刪除上面的pBuffer? 因此,內存使用率返回到調用新Bitmap()之前的水平。

這不是Windows內存管理器的工作方式。 釋放內存時,堆塊僅被標記為“未使用”。 可用於下一個分配。 確實合並了空閑塊並取消了虛擬地址空間的使用,但是並不急於這樣做。 它使用的確切規則沒有記錄,並且隨操作系統版本的不同而不同。

否則,任務管理器無法完成工作,無法可靠地指示實際使用的虛擬內存。 最重要的是,這並不是一件容易的事。 HeapWalk()api函數可以做到這一點,但帶有強烈警告,指出實際使用它會產生有害的副作用。 由於它必須采取太多的鎖定才能使其安全。 只有凍結所有線程的調試器才能做到這一點,而不會產生那些副作用。 就像Windbg的!heap命令一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM