1. 程式人生 > >分配內存malloc()和free()

分配內存malloc()和free()

1、首先回顧一下內存分配的有關事實。所有的程序都必須留出足夠內存來存儲他們使用的數據。一些內存分配是自動完成的。如:

float x;

char place[]="dancing oxen creek".

於是系統將留出存儲float或者字符串足夠的內存空間,也可明確要求確切的內存,int a[100];這一聲明留出100個內存位置。每個位置可存儲一個int值。c的功能遠非如此。可以在程序運行時分配更多的內存。主要工具函數就是malloc(),參數:所需字節數。然後malloc()找到可用內存中一個大小適合的塊。內存是匿名的,也就是說malloc()分配了內存,但沒有為他指定名字。然而它卻可以返回那塊內存第一個字節的地址。因此,可以把該地址賦值給一個指針變量,並使用該指針來訪問那塊內存。malloc()函數可用來返回數組指針、結構指針等等。我們使用malloc()來創建一個數組,可以在程序運行時使用malloc()請求一個存儲塊,另外還需要一個指針來存放該塊在內存中的位置。

double * ptd;

ptd=(double*)malloc(30 * sizeof(double));請求30個double類型的空間,把ptd指向該空間的位置。一般來說,對於每個malloc()函數調用,應該調用一次free(),free()的參數是malloc()返回的地址,它釋放先前分配的內存。

分配內存malloc()和free()