我刚开始学习C语言编程,关于2D矩阵与free()命令的结合,我有几个问题。
我知道首先需要创建一个指针数组,指向矩阵的不同列:
double **array = (double **)malloc(5*sizeof(double *));
for(int n = 0; n<5; n++){
array[n] = (double *) malloc(6*sizeof(double));
我知道正确的释放此矩阵的方法是首先释放单个行,然后再释放数组指针本身。大致如下:
for (i = 0; i < nX; i++){
free(array[i]); }
free(array);
我的问题是:这为什么是必须的?我知道这种方法是不正确的,但为什么不能只使用 free(array) ?这会释放指针 array 的内存,据我所知,由列使用的内存不被其他程序访问时就会被覆盖。 free(array) 会导致内存损坏吗?
任何帮助都将不胜感激!