我现在正在使用OS X 10.10.5,我正在进行有关malloc和堆的实验,如下所示:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p;
p = malloc(sizeof(int));
*p = 100;
printf("the malloc p pointer addr is %x\n", p);
getchar();
}
输出为the malloc p pointer addr is c3404ba0
;
我认为地址0xc3404ba0
由maclloc分配为进程堆的一部分。
我们可以看到0xc3404ba0
不在堆区域中,但它确实是指向已分配内存的指针。这有什么问题?
现在修复,当我使用%p而不是%x时,输出为the malloc p pointer addr is 0x7fe131404ba0
并且vmmap输出是:
感谢@Alex Lop。