在C中,free()
用於釋放內存,比如free(ptr)
。據我所知,在庫代碼中的ptr之前分配額外的內存來存儲塊大小信息。在調用free()
之後,整個塊會被跟蹤並釋放。C++中的邏輯刪除和刪除[]
在C++中,有兩種形式的new和delete。一個是數組。如果使用new[]
,則應使用delete[]
。例如,
int ptr = new [10];
delete [] ptr;
問題1:我可以在這裏使用delete ptr
嗎?如果那是好的,如果delete ptr + 2
?
問題2:如果delete[]
必須用於匹配new[]
,爲什麼我們需要兩種形式的刪除?只需要一個表格,例如delete
就足夠了。
感謝您的所有建議!
感謝Mgetz。問題2應該是:爲什麼C++標準在任何情況下都建議刪除[]並刪除如果只有一個正確格式?
打開你的想法http://www.parashift.com/c++-faq/freestore-mgmt.html – lsalamon
這是C++的塵土飛揚的角落之一。避免新的[]和刪除[]像瘟疫。 – epx