我刚刚执行了这个代码示例:
int *i = (int*) malloc( sizeof(int) );
printf( "%p, %p\n", &i , i );
这就是我得到的:
0x7fff38fed6a8, 0x10f7010
所以我想知道为什么第二个地址比第一个短?
最佳答案
i
在栈上,而它指向的内存块在堆中。在您的平台上,这是两个截然不同的内存区域,恰好堆地址在数值上相对较低,因此它有很多未显示的前导零,即
&i = 0x7fff38fed6a8; // stack
i = 0x0000010f7010; // heap
关于c - 指针地址如何具有不同的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597493/