使用記憶體管理函式實現動態陣列

2022-05-04 19:21:27 字數 1402 閱讀 5135

c語言提供了一些記憶體管理函式,這些記憶體管理函式可以按需要動態地分配記憶體空間,也可把不再使用的空間釋放,為有效地使用記憶體資源提供了手段。

動態陣列,指的就是利用記憶體的申請和釋放函式,在程式的執行過程中,根據實際需要指定陣列的大小。其本質就是乙個指向陣列的指標變數。

主要用到的記憶體管理函式是:malloc和free。

1、分配記憶體函式malloc:

呼叫形式:(型別說明符*)malloc(size);

功     能:在記憶體的動態儲存區中分配一塊長度為size位元組的連續區域。

「型別說明符」表示把該區域用於何種資料型別。

「(型別說明符*)」表示把返回值強制轉換為該型別指標。

「size」是乙個無符號數。

例如,pc = (char *)malloc(100);表示分配100個位元組的記憶體空間,並強制轉換為字元陣列型別,函式的返回值為指向該字元陣列的指標。

2、釋放記憶體空間函式free:

呼叫形式:free(void *ptr);

實現一維動態陣列程式框架:

int num;   //要建立乙個大小為num的一維陣列,num由使用者輸入或其他方式獲得

int *array;   //建立一維指標來指向一維陣列

array = (int *)malloc(sizeof(int) * num);   //動態建立乙個大小為num的整形一維陣列

if(array == null)

printf(「out of memory, press any key to quit…\t」);

exit(0);

}…   //使用動態陣列

free(array);   //釋放由malloc申請的記憶體空間

實現二維動態陣列程式框架:

int i;

int row, col;   //要動態建立乙個行數為row,列數為col的二維陣列,row和col由使用者輸入或其他方式獲得

int **array;   //建立二維指標來指向二維陣列

array = (int **)malloc(sizeof(int *) * row);    //動態建立乙個大小為row×col的整形二維陣列

for(i=0; iarray[i] = (int *)malloc(sizeof(int) * col);

}…   //使用動態陣列

for(i=0; ifree(array[i]);   //先釋放一維指標

free(array);   //最後釋放二維指標

記憶體動態管理

記憶體動態管理 主要是指對 堆 記憶體或者自由記憶體的管理和使用 在c語言中使用malloc 和free 動態分配和釋放儲存單元。malloc 以空間大小作為引數,不知道資料具體型別,因此分配空間後範圍的位址指標void 無法指向具體的資料,必須進行強制轉換後才可以指向具體型別資料。c 提供了使用簡...

C語言動態記憶體管理,柔性陣列

c語言提供了乙個動態記憶體開闢的函式 void malloc size t size 這個函式向記憶體申請一塊連續可用的空間,並返回指向這塊空間的指標。1.如果開闢成功,則返回乙個指向開闢好空間的指標。2.如果開闢失敗,則返回乙個null指標,因此malloc的返回值一定要做檢查。3.返回值的型別是...

動態記憶體管理

首先應該明白物件的三種內部的儲存方式 自動儲存,靜態儲存,和動態儲存。當執行離開當期程式塊的時候,堆疊指標返回到它進入程式塊 之前的地方,有效的銷毀了那個程式塊的自動變數。重新進入這個塊會再次建立所有的自動變數。靜態物件宣告或者在檔案域中。動態物件是存在系統呼叫 的在執行期中建立並且儲存在堆中,這是...