c中的sizeof mmap,我们怎么知道我分配了多少内存

时间:2015-06-27 00:19:14

标签: c sizeof mmap

我正在尝试在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));

1 个答案:

答案 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)
    ...
}