清除虚拟内存的哪些部分?

时间:2013-05-31 21:46:45

标签: c virtual-memory

我想清除一些虚拟内存,因为我需要从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的倍数。

有没有更简单的方法来释放这段记忆?

注意:项目要求是我需要释放内存但是没有说明如何。

1 个答案:

答案 0 :(得分:2)

您可能正在取消运行代码的内存。您可以在调试器中通过在if语句中设置断点并将blok的值与当前程序计数器进行比较来检查。

相关问题