0
看看這個簡單的應用:內存泄漏0行代碼。
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
void main(void)
{
_CrtDumpMemoryLeaks();
}
它產生在調試窗格中的下一個輸出:
Detected memory leaks!
Dumping objects ->
{94} normal block at 0x012EA298, 8 bytes long.
Data: <Dw > 44 77 D9 00 00 00 00 00
{93} normal block at 0x012F0DA8, 20 bytes long.
Data: </// > A8 0D 2F 01 A8 0D 2F 01 A8 0D 2F 01 01 01 CD CD
Object dump complete.
Detected memory leaks!
怎麼可能?
Win10,VS2015,目標平臺版本10.0.14393.0
最有可能的一些是內部的運行時C庫,和被構造當C靜態範圍的對象庫初始化。不是真的內存泄漏。 –
由運行時創建的對象可能產生的誤報在檢查泄漏時未被銷燬。 – NathanOliver
你爲什麼在意?您即將退出您的應用程序。一旦你的進程存在,就沒有內存泄漏這樣的事情,除非操作系統本身就是bug。當進程終止時,它所分配的所有內存都會自動釋放。你在代碼中做的任何事情都不會改變這一點。 –