malloc是C運行庫函數,該函數和free函數配對使用。函數malloc的原型如下:
void * malloc(size_t size);
使用malloc函數時,需要注意兩點:
(1),malloc返回值的類型是void *,所以在調用malloc時要顯示地進行類型轉換,將void *將void *的類型轉換成所需要的指針類型。
(2),malloc 函數本身並不識別要申請的內存的是什麼類型,它只關心內存的總字節數。所以在malloc的“( )”中使用sizeof運算符可以防止錯誤的發生。
例如:
int * p = (int *)malloc(sizeof(int)*lenght);
函數free的原型如下:
void free( void *p);
free 函數的使用不像malloc函數那樣複雜。
因爲指針p 的類型以及它所指的內存在調用函數free之前都是知道的,所以語句free(p)能正確地釋放內存。如果p 是NUUL指針,那麼free對p無論操作多少次都不會出問題。如果p不是NULL指針,那麼free對p連續操作兩次就會導致程序運行錯誤。
運算符new 和運算符delete配對使用。
由於運算符new內置了sizeof 、類型轉換和類型安全檢查功能,所以運算符new使用起來要比函數malloc簡單的多,而且不易出錯,寫的程序更健壯。
比如下面的代碼用運算符new申請一塊長度爲length的整數類型的內存:
int * p = new int[length];
函數delete釋放內存的代碼示例如下:
delete p;