通过没有munmap的mmap分配的内存会在进程退出或终端后导致泄漏

mic*_*yxd 2 c linux gcc memory-leaks mmap

有关于 alloc mem 通过 mmap 的代码

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

当进程正常退出时,内存将返回到 os ?

Sur*_*urt 5

男子及以下unmap

当进程终止时,该区域也会自动取消映射。

这听起来非常合理,因为内存被添加到虚拟内存中的进程页面中,虚拟内存在终止时被释放。

Opengroup没有就这个问题发表任何意见。

如果系统没有释放内存您可以尝试设置 at_exit 以清除任何仍然有效的仍然有效的内存映射,如果您能找到指向它的指针。