Code Bye

讨教malloc分配的内存连续性

	int *p1 = malloc(1*sizeof(int));
	int *p2 = malloc(1*sizeof(int));
	printf("%p\t%p\n", p1, p2);

在本人电脑显示00410218   00410228。为什么第二个地址比第一个大了不只4字节?是分配不连续还是别的道理?

解决方案

20

题主觉得地址应该差4才正常?
那么你想想。假如本人此时去free,怎么能知道本人应该释放多大的内存空间呢?
malloc的时候,申请的空间一定是大于括号中的字节数的,原因是它还需要保存边界信息以及内存管理信息,可能还要对齐
http://blog.csdn.net/misskissc/article/details/17717717

20

分配内存时还会有一些记录相关信息的结构
http://blog.csdn.net/a10615/article/details/41063063

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教malloc分配的内存连续性