我正在尝试在c中使用mmap()来映射内存。运行以下代码后,它打印1,因为sizeof(void *)是1,所以我们怎么知道我们确实获得了1234字节的内存
void *heap_region = NULL;
heap_region = mmap(NULL, 1234, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
printf("%lx",sizeof(*heap_region));
答案 0 :(得分:0)
如果呼叫成功,这意味着您(至少)得到了您要求的1234字节
如果返回的指针不是MAP_FAILED
,您就知道调用成功了。
所以你可以说
if(heap_region == MAP_FAILED) {
fprintf(stderr, "mmap failed: %s\n", strerror(errno));
exit(1);
} else {
printf("mmap succeeded: %p\n", heap_region)
...
}