C語言動態申請記憶體
阿新 • • 發佈:2019-01-21
在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成對出現,在用完申請的記憶體之後及時釋放,否則會造成記憶體洩漏。
我們在一些專案中經常出現記憶體洩漏的情況,查起來非常麻煩,所以我們養成良好的習慣,申請的記憶體用完之後及時的釋放。