回复 4楼 吹水佬
不确定。
试着realloc 的时候 只要m <=3 ,它返回的首地址就会跟 malloc 分配一个int 内存的首地址一致
#include "stdafx.h"
#include "stdlib.h"
int main()
{
int *p = NULL;
//初始化
p = (int *)malloc(sizeof(int)); // 用malloc 给p 分配 内存
if (NULL == p)
{
printf("error.\n");
return -1;
}
*p =4;
printf("p=%p\n", p);
printf("*p=%d\n", *p);
p = (int *)realloc(p, sizeof(int));
//用realloc 给 p 分配内存
if (NULL == p)
{
printf("error.\n");
return -1;
}
printf("p=%p\n", p);
printf("*p=%d\n", *p);
p = (int *)realloc(p, 3 * sizeof(int));
//为p分配 3 个 int 内存空间
if (NULL == p)
{
printf("error.\n");
return -1;
}
printf("p=%p\n", p);
printf("*p=%d\n", *p);
realloc(p, 0);
p = NULL;
printf("sizeof(int)=%d \n", sizeof(int));
printf("3*sizeof(int)=%d \n", 3* sizeof(int));
return 0;
}