C++學(xué)習(xí)筆記(動(dòng)態(tài)內(nèi)存)
很多時(shí)候,您無法提前預(yù)知需要多少內(nèi)存來存儲(chǔ)某個(gè)定義變量中的特定信息,所需內(nèi)存的大小需要在運(yùn)行時(shí)才能確定。
double* pvalue = NULL; // 初始化為 null 的指針
pvalue = new double; // 為變量請求內(nèi)存
delete pvalue; // 釋放 pvalue 所指向的內(nèi)存
如果自由存儲(chǔ)區(qū)已被用完,可能無法成功分配內(nèi)存韩玩。所以建議檢查 new 運(yùn)算符是否返回 NULL 指針,并采取以下適當(dāng)?shù)牟僮鳎?巨坑啊 讓我聯(lián)想到Java中NullPoint)
double* pvalue = NULL;
if( !(pvalue = new double ))
{
cout << "Error: out of memory." <<endl;
exit(1);
}
數(shù)組的動(dòng)態(tài)內(nèi)存分配:
char* pvalue = NULL; // 初始化為 null 的指針
pvalue = new char[20]; // 為變量請求內(nèi)存
delete [] pvalue; // 刪除 pvalue 所指向的數(shù)組
對象的動(dòng)態(tài)內(nèi)存分配:
#include <iostream>
using namespace std;
class Box
{
public:
Box() {
cout << "調(diào)用構(gòu)造函數(shù)陆馁!" <<endl;
}
~Box() {
cout << "調(diào)用析構(gòu)函數(shù)找颓!" <<endl; //析構(gòu)函數(shù)
}
};
int main( )
{
Box* myBoxArray = new Box[4];//這種寫法看的蛋疼啊 創(chuàng)建4個(gè)Box對象
delete [] myBoxArray; // Delete array 也會(huì)調(diào)用4次析構(gòu)函數(shù)
return 0;
}
learn and copy from: