在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;