2015-10-09 45 views
0

存在經由MMAP約ALLOC MEM代碼號負責經由MMAP alloced而不munmap將過程退出或端子

void *ret = mmap(NULL, 4 * 1024, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);

當處理正常退出,所述存儲器將被返回到操作系統後引起泄漏?

+0

你可以提供更多關於操作系統,編譯器和語言的信息嗎? – Surt

+0

操作系統:Linux 編譯器:gcc 語言:c –

回答

2

按照man和下unmap

該地區也是自動未映射時的過程是 終止。

這聽起來非常合理,因爲內存被添加到虛擬內存中的進程頁面,在終止時被釋放。

Opengroup在這個問題上沒有說什麼。

如果系統沒有釋放內存您可以嘗試設置at_exit以清除仍然有效的任何仍然有效的memmaps,前提是您可以找到指向它的指針。

+0

您剛剛保存了一天。 –