1

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

我这样做对吗?

问候。

4

2 回答 2

7

基本上应该是对的。

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

您可以只使用一个malloc和一个free

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

使用单个调用malloc还具有在内存中连续分配矩阵元素的好处。

于 2013-04-17T20:50:50.030 回答
2

看起来像。尽管您可以并且可能应该(出于效率目的)只做一个 malloc 和一个 free ,如此处所示

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

于 2013-04-17T20:51:33.800 回答