C 記憶體的申請和使用注意事項

2021-10-04 20:23:23 字數 1233 閱讀 7893

申請記憶體時,要判斷是否申請成功(一般申請大塊記憶體時,應進行判斷);

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 ...