我动态分配内存如下:
char* heap_start1 = (char*) malloc(1);
char* heap_start2 = (char*) malloc(1);
当我按如下方式执行 printf 时,地址不是连续的。
printf("%p, %p \n",heap_start1,heap_start2);
结果:
0x8246008, 0x8246018
如您所见,有 15 字节的额外内存被碎片整理。这绝对不是因为单词对齐。这种奇特的排列背后有什么想法吗?
提前致谢!
如果这很重要,我在 linux 中使用 gcc。