我有这个循环从标准输入读入数组
int* arr;
arr = malloc(sizeof(int)*size);
for (i = 0; i < size; i++)
{
read(0, &arr[i], 4);
}
如果 arr
是共享内存指针,我怎样才能使它工作 arr=createSharedMemory(sizeof(int)*size)
int* createSharedMemory(size_t size) {
int protection = PROT_READ | PROT_WRITE;
int visibility = MAP_ANONYMOUS | MAP_SHARED;
return (int*)mmap(0, size, protection, visibility, 0, 0);
}
目前它是分段错误
1 回答
检查
mmap()
的退货 .你试过
mmap()
stdin . 除了异国情调的环境,stdin是某种终端或管道,它们都不支持内存映射IO .试试这个样本:
顺便说一句,如果
sizeof(int) < 4
不太可能,你的读循环将会爆炸 .