-1
我想找到一个数组的内存映射或从malloc()使用mmap()分配的一些内存,但它显示无效的参数。mmap()的数组或malloced内存
#include<stdio.h>
#include<sys/mman.h>
#include<stdlib.h>
int main()
{
int *var1=NULL;
size_t size=0;
size = 1000*sizeof(int);
var1 = (int*)malloc(size);
int i=0;
for(i=0;i<999;i++)
{
var1[i] = 1;
}
printf("%p\n",var1);
void *addr=NULL;
addr = mmap((void *)var1, size, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, -1, 0); //to create memory map of var1
err(1,NULL); //to print error
return 0;
}
错误:
a.out: Invalid argument
请帮助我。
预先感谢您。
实际上,我想进一步使用madivse()中的映射将内存标记为可合并。 所以,如果你可以帮助我使用madvise()将一些malloced内存标记为可合并的。 请帮帮我。 – pratick 2012-02-04 15:48:59
阅读'madvise'手册页。它说“KSM只合并私人匿名页面(参见'mmap(2)')”。你从'malloc'获得了你的内存块。这不是一个私人的匿名页面。它不符合使用'madvise(MADV_MERGEABLE)'的要求。故事结局。 – Celada 2012-02-04 20:56:42