1. 程式人生 > >C語言動態申請記憶體

C語言動態申請記憶體

在C語言中,陣列的長度在定義變數的時候便需要指定,並且只能是一個常數,不能是其它變數。所以,一旦定義了一個數組,系統將為它分配一個固定大小的空間,以後都不能改變,這樣的陣列稱為靜態陣列。
但在某些時候,我們需要的陣列的長度是無法預先確定的,要解決這樣的限制,需要使用動態陣列。動態陣列是相對於靜態陣列而言。動態陣列的記憶體空間是從堆(heap)上分配的,是在執行程式碼過程中分配的,當程式執行到這些語句時,才為其分配。注意,程式設計師自己負責釋放記憶體。
#include<stdio.h>
#include<stdlib.h>

int main(int arcv, char
* argv[]) { int arrLen; char *array; char c; int i; printf("please set the size of the len:\n"); scanf("%d", &arrLen); array = (char *)malloc(arrLen*sizeof(char)); if(array == NULL) { printf("malloc fail\n"); return -1; } for(i = 0; i < arrLen;i++) { c = getchar(); array
[i] =c;//*array++ =c; } for( i = 0; i < arrLen; i++) { printf("this array is %c\n", array[i]); } free(array); return 0; }
mallco和free成對出現,在用完申請的記憶體之後及時釋放,否則會造成記憶體洩漏。
我們在一些專案中經常出現記憶體洩漏的情況,查起來非常麻煩,所以我們養成良好的習慣,申請的記憶體用完之後及時的釋放。