簡體   English   中英

釋放內存-二維數組

[英]Freeing the memory - two dimensional array

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

我這樣做對嗎?

問候。

基本上應該是對的。

順便說一句,您不需要為要分配的2d數組的每一行調用malloc (除非您有特定的原因要這樣做)。

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

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

使用單個調用malloc還具有在內存中連續分配矩陣元素的好處。

看起來像它。 雖然可以,而且也應該(出於效率目的)做一個malloc和一個免費如圖所示這里

如果您不需要顯式地使用C語言,那么值得一看的是為您處理內存的向量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM