释放内存 - 二维数组

时间:2013-04-17 20:45:05

标签: c visual-studio-2010

我使用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;
}

我这样做了吗?

问候。

2 个答案:

答案 0 :(得分:7)

基本上应该是对的。

顺便说一下,您不需要为要分配的2d数组的每一行调用malloc(除非您有特定的理由这样做)。

您只能使用一个malloc和一个free

malloc(sizeof(int*)*ROW_NUM * COL_NUM);

使用对malloc的单次调用还可以在内存中连续分配矩阵元素。

答案 1 :(得分:2)

看起来像。虽然你可以而且可能应该(出于效率目的)只做一个malloc和一个free,如图所示here

如果您不需要明确地使用C语言,那么可能值得一看矢量来为您处理内存。