我想清除一些虚拟内存,因为我需要从 elf 文件中加载段。
(我正在编写一个加载和执行ELF 文件的程序)。
据我了解,我必须使用munmap
unsigned int blok = sectionHeads[i].adr - (sectionHeads[i].adr % getpagesize());
if (munmap((void *)blok,getpagesize()) == -1)
{
printf("fail\n");
}
else
{
printf("succ\n");
}
blok是我要从中释放内存的地址的倍数。(或者我认为,英语不是我的母语,所以我很可能误解了“多个”的含义)。
我想释放内存,因为稍后我需要那个空间。
当我运行程序时,它不会超出munmap();
我究竟做错了什么?
我在 munmap 文档中发现的唯一约束是地址参数必须是系统页面大小的倍数。
有没有更简单的方法来释放这个内存?
注意:项目要求是我在需要时释放内存,但没有说明如何。