C++學習筆記:New和Delete
C語言操作內存的方式
C++ 的處理方式
使用new/delete的注意事項
1) 避免對void* 類型指針執行delete操作。由於void* 沒有類型信息,執行delete操作時只能釋放內存,不會調用deconstructor函數。
2)數組的操作:
MyType *pType = new MyType[100];
Delete []pType;
如果使用 "delete ptype"也可以正確釋放內存,但是隻會調用數組中第0個成員的deconstructor。3) new/delete 可以重載,可以定義在global範圍,或class中;
4) 參數的傳入: new(23) int;
5) placement new的使用,可以通過將內存的地址傳入在制定的內存上創建對象;例如:
void *p = malloc(sizeof(CA));
CA *pA = new(p) CA;
pA->~CA(); // notice: only object is destroyed, memory is kept;
free(p);
6) Delete可以刪除0;
7) 類的內存管理成員函數隱含是靜態的;