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