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

sizeof mmap in c, how can we know how many memory do i alloc

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

如果调用成功,这意味着您(至少)得到了您要求的 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)
    ...
}