Munmap不起作用

时间:2015-06-07 05:45:32

标签: c memory malloc mmap dynamic-memory-allocation

我对munmap有疑问。 我实现了自己的malloc / free。 Malloc工作正常,但免费没有。

示例(我直接使用大型munmap,因为我的免费代码太长而无法显示在这里):

#include "malloc.h"
#include <stdio.h>
int main()
{
    int i;
    char *addr;
    char *t;
    i = 0;
    while (i < 1024)
    {
        addr=(char *)my_malloc(1024);
        addr[0] = 42;
        if (i == 0)
            t = addr;
    //  my_free(addr);
    i++;
    }
    if (munmap(t, 1024*1024) != -1)
        printf("Ok\n");
    return 0;
}

使用/ usr / bin / time -l ./a.out进行测试时,即使我删除了munmap,页面回收的数量仍然相同。 所以,我想munmap以其他方式失败,以取消映射页面.. 但我根本无法理解它可能来自哪里。

其他例子更简单:

# include <string.h>
# include <sys/mman.h>
# include <string.h>
# include <unistd.h>
# include <stdio.h>

int main()
{
    int i;
    char *addr;
    i = 0;

    while (i < 100)
    {
        addr =  (char *)mmap(0, getpagesize()*256, PROT_READ | PROT_WRITE, MAP_ANON
        | MAP_PRIVATE, -1, 0);
        addr[0] = 42;
        munmap(addr, getpagesize()*256);
        i++;
    }
    return 0;
}

始终使用/ usr / bin / time -l ./a.out

对于munmap与否,恢复的页数仍然相同..

任何想法?

谢谢!

编辑: 总是没有想法,我做了一些测试,内存被有效地解除分配,但回收的页面数仍然是相同的。 我真的不明白?这是munmap的错误吗?

0 个答案:

没有答案