释放内存 - 二维数组

tom*_*ies 1 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;
}
Run Code Online (Sandbox Code Playgroud)

我这样做了吗?

问候.

Hei*_*bug 7

基本上应该是对的.

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

你可以只使用一个malloc和一个free:

malloc(sizeof(int*)*ROW_NUM * COL_NUM);
Run Code Online (Sandbox Code Playgroud)

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

  • 有时你只是无缘无故地得到它们. (5认同)