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
那么你想想。假如本人此时去free,怎么能知道本人应该释放多大的内存空间呢?
malloc的时候,申请的空间一定是大于括号中的字节数的,原因是它还需要保存边界信息以及内存管理信息,可能还要对齐
http://blog.csdn.net/misskissc/article/details/17717717
20
分配内存时还会有一些记录相关信息的结构
http://blog.csdn.net/a10615/article/details/41063063
http://blog.csdn.net/a10615/article/details/41063063