int *a = (int *)malloc(sizeof(int)*4); //让指针a指向了一块能存4个int的内存地址。
a = (int *)malloc(sizeof(int) * 6);//让指针a指向了另外一块能存6个int的内存地址。
执行后,a可操作内存是后来的6个int,造成了失控(泄露)的内存(垃圾)有4个int大小。
正确写法1
int *a = (int *)malloc(sizeof(int)*4);
free(a);//释放之前的4个int
a = (int *)malloc(sizeof(int) * 6);
正确写法2
int *a = (int *)malloc(sizeof(int)*4);
a = (int *)realloc(a,sizeof(int) * 6);//重设该空间为6个int
温馨提示:答案为网友推荐,仅供参考