我是編程新手。區別SAFE_RELEASE(),SAFE_DELETE()
我想知道釋放和刪除功能。
當我用new分配內存時,我應該用delete來終止它。
但是,當我應該使用發佈?
有什麼區別發佈和刪除...?
我是編程新手。區別SAFE_RELEASE(),SAFE_DELETE()
我想知道釋放和刪除功能。
當我用new分配內存時,我應該用delete來終止它。
但是,當我應該使用發佈?
有什麼區別發佈和刪除...?
C++沒有發佈,也許你看到在一個涉及COM +的教程?像DirectX一樣?
當然,SAFE_RELEASE
和SAFE_DELETE
實際上不是C++的一部分,並且很可能是某些頭文件中定義的宏。
總之,這裏的規則:
delete[]
你new[]
delete
你new
free()
你malloc()
/calloc()
/realloc()
如果您正在尋找定義你會發現
#define SAFE_RELEASE(p) { if ((p)) { (p)->Release(); (p) = 0; } }
#define SAFE_DELETE(a) if((a) != NULL) delete (a); (a) = NULL;
SAFE_DELETE應該用於新
SAFE_RELEASE分配的內存應該 「引擎蓋下」 被調用COM對象(如DirectX的對象),並doind這樣的
if (--ref_cnt==0)
{
delete this;
}
它遞減一個引用計數器並釋放該對象,如果沒有更多的引用它。
哦,奇妙的'SAFE_DELETE'將指針清零以確保我們不會過度訪問它指向的對象...... –
其中是SAFE_RELEASE和SAFE_DELETE定義它們不是標準C或C++的一部分 – Mark