天天看點

C/C++之動态記憶體配置設定

在C中用庫函數malloc實作動态記憶體配置設定

malloc是在C語言中用于在程式運作時在堆中進行動态記憶體配置設定的庫函數。

1、函數原型

#include <stdlib.h> 
void *malloc
(    
    size_t size 
);
           

傳回值:

成功時,傳回所配置設定存儲空間的起始位址;傳回值類型為void*,在C語言中可以把void*直接賦給具體的類型,但是在C++中必須進行強制類型轉換。

在C中用庫函數free釋放動态記憶體

在C++中用new實作動态記憶體配置設定

一. 配置設定一個變量

對于 P = new T (T是任意類型名,P是類型為T *的指針),就是動态配置設定出一片大小為sizeof(T)位元組的記憶體空間,并且将記憶體空間的起始位址指派給P。eg:

int * pn;
pn = new int;
* pn = 5;
           

二. 配置設定一個數組

對于 P = new T[Na] (T是任意類型名,P是類型為T *的指針),就是動态配置設定出一片大小為N * sizeof(T)位元組的記憶體空間,并且将記憶體空間的起始位址指派給P。eg:

int * pn;
pn = new int[100];
pn[0] = 5;
           

傳回值:

成功時,傳回所配置設定存儲空間的起始位址;傳回值類型為T*。

在C++中用delete釋放動态記憶體

注意:用“new”動态配置設定的記憶體空間一定要用“delete”運算符進行釋放。

一. 釋放一個變量

文法:

delete 指針;   //  該指針必須指向new出來的變量
           

eg:

int * p = new int;
*p =5;
delete p;
           

注意:一片空間不能被delete多次。

二. 釋放一個數組

文法:(一定要加[ ])

delete [] 指針;   //  該指針必須指向new出來的數組
           

eg:

int * p = new int[20];
p[0] =5;
delete []p;
           

繼續閱讀