我刚刚开始用c学习编码,我和free()命令结合使用了一些关于2d矩阵的问题.
我知道你首先需要创建一个带指针的数组,指向矩阵的不同列:
double **array = (double **)malloc(5*sizeof(double *));
for(int n = 0; n<5; n++){
array[n] = (double *) malloc(6*sizeof(double));
Run Code Online (Sandbox Code Playgroud)
我知道然后解除分配这个矩阵的正确方法是首先释放各个行,然后释放数组指针本身.有点像:
for (i = 0; i < nX; i++){
free(array[i]); }
free(array);
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么这有必要?我知道这不正确,但为什么你不能只使用:free(array)?根据我的理解,这会释放指针数组.当其他东西需要访问它时,列的使用内存是否会被覆盖?free(array)会以任何方式导致内存损坏吗?
任何帮助深表感谢!