#include<stdio.h>
#include<stdlib.h>
int main(){
void *p;
int count = 0;
while((p = malloc(1024)) && count <= 5){
printf("p_%d = %p\n",count,p);
count ++;
}
}
p_0 = 00000000000213C0
p_1 = 0000000000026CC0
p_2 = 00000000000270D0
p_3 = 00000000000274E0
p_4 = 00000000000278F0
p_5 = 0000000000027D00
p1 - p0 = 0x5900;
p2 - p1 = 0x410;
p3 - p2 = 0x410;
p4 - p3 = 0x410;
为什么第一个 p1 - p0 出现如此奇怪的数?
然而, 0x410 转换为十进制数是 1040 而不是 1024 ,为什么?
malloc()函数每次申请,之前已经申请到的内存空间应该不会消失吧?两次连续的申请之间,分配的新的内存空间是不连续的吗?
谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.