有关于通过mmap分配内存的代码
void *ret = mmap(NULL, 4 * 1024, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
当进程正常退出时,内存会归还给操作系统吗?
最佳答案
根据man在 unmap
下:
The region is also automatically unmapped when the process is terminated.
这听起来很合理,因为内存被添加到虚拟内存中的进程页面,虚拟内存在终止时被释放。
Opengroup没有就这个问题说任何话。
如果系统没有释放内存您可以尝试设置一个 at_exit 来清除任何仍然分配的内存映射,如果您可以找到指向它的指针,这些内存映射仍然有效。
关于c - 通过 mmap 分配的内存没有 munmap 会在进程退出或终端后导致泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33040770/