malloc 是不是就等於做一个数组

C语言中的: int* a = (int *)malloc(sizeof(int) * 4) 等於创建了一个可以存放4个int的整型,那我接下去如果说 :a = (int *)malloc(sizeof(int) * 6) 那是表示我重新造了一个可以容纳6个整型的数组(即把最开始创建的那个a给覆盖了),还是说 现在a可以容纳下10个int整型了? 求解释

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
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜