我使用Visual C ++ 2010,我正在尝试使用带有二维数组的free():
#include <stdio.h>
#include <stdlib.h>
#define SIZE 8
int main(){
int **matrix = (int**)malloc(sizeof(int*)*SIZE);
int i;
for(i=0; i<SIZE; i++){
matrix[i] = (int*)malloc(sizeof(int)*SIZE);
}
for(i=0; i<SIZE; i++){
free(matrix[i]);
}
free(matrix);
getch();
return 0;
}
我这样做了吗?
问候。
答案 0 :(得分:7)
基本上应该是对的。
顺便说一下,您不需要为要分配的2d数组的每一行调用malloc
(除非您有特定的理由这样做)。
您只能使用一个malloc
和一个free
:
malloc(sizeof(int*)*ROW_NUM * COL_NUM);
使用对malloc
的单次调用还可以在内存中连续分配矩阵元素。
答案 1 :(得分:2)
看起来像。虽然你可以而且可能应该(出于效率目的)只做一个malloc和一个free,如图所示here
如果您不需要明确地使用C语言,那么可能值得一看矢量来为您处理内存。