申請記憶體時,要判斷是否申請成功(一般申請大塊記憶體時,應進行判斷);
1. vc++6.0編譯器中當new分配記憶體失敗時會返回空指標
//vc++6.0中當new分配記憶體失敗時會返回空指標
unsigned char* pframebuffer=new (std::nothrow) unsigned char[1024*1024];
if(pframebuffer==null)
2. gcc的編譯器對於c++標準支援比較好,所以當new分配記憶體失敗時會丟擲異常
//gcc的編譯器對於c++標準支援比較好,所以當new分配記憶體失敗時會丟擲異常
trycatch
1.判斷要儲存的記憶體大小是否小於記憶體大小;
2.如果不小於,則進行拷貝儲存;
3.如果小於,則將之前申請的記憶體進行釋放,重新申請更大的記憶體,直到滿足要儲存的記憶體大小;
int inewsize=1024;
unsigned char* pframebuffer=new unsigned char[inewsize];
//記憶體不夠,釋放掉重新申請
while(ineedsize > inewsize)
//申請更大的新buffer
inewsize=inewsize*1.5;
unsigned char* pframebuffer=new unsigned char[inewsize];
}//拷貝賦值
memcpy(distbuffer,srcbuffer,ineedsize);
1.char *psrc = src;(在使用src之前,先定義乙個指向src的指標,程式執行期間,使用psrc指標。防止src所指位置改變,將導致delete時出錯)
2.new申請使用delete釋放;new申請使用 delete釋放。
int *p = new int; //分配1個int型的記憶體空間
delete p; //釋放記憶體
int *p = new int[10]; //分配10個int型的記憶體空間
delete p;
3.已經釋放的記憶體,再次釋放會報錯
int* p = new int;
*p = 5;
delete p;
delete p; //本句會報錯
記憶體的申請和釋放
常規用法 virtualalloc lpvoid lpaddress,size t dwsize,dword flallocationtype,dword flprotect lpaddress,指定記憶體開始的位址。dwsize,分配記憶體的大小。flallocationtype,分配記憶體的型別...
記憶體的申請和釋放
在c裡,記憶體管理是通過專門的函式來實現。另外,為了相容各種程式語言,作業系統提供的介面通常是c 語言寫成的函式宣告 windows 本身也由c和組合語言寫成 1分配記憶體malloc函式 需要包含標頭檔案 and 函式宣告 函式原型 void malloc int size 說明 malloc 向...
C 記憶體管理與注意事項
記憶體是程式執行必不可少的資源,由作業系統分配和管理。作為程式設計師,我們通常做的只能是申請和歸還。本文主要介紹c 記憶體的申請和釋放 歸還 以及注意事項。申請 new 釋放 delete 申請記憶體 int p new int 定義乙個指標,來接收new申請到的位址 釋放記憶體 delete p ...