我想清除一些虚拟内存,因为我需要从elf文件加载段。
(我正在编写一个加载并执行ELF file的程序)。
据我所知,我必须使用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文档中找到的唯一约束是address参数必须是系统pagesize的倍数。
有没有更简单的方法来释放这段记忆?
注意:项目要求是我需要释放内存但是没有说明如何。
答案 0 :(得分:2)
您可能正在取消运行代码的内存。您可以在调试器中通过在if
语句中设置断点并将blok
的值与当前程序计数器进行比较来检查。