Yoyo 期待已久的公司團旅第二天!雖然是充實且收穫滿滿的旅行,但路途遙遠好晚才回到家。吃完美味的雞蛋糕,繼續本日的閱讀筆記。
new
and delete
在撰寫自訂的 new
和 delete
時,務必遵守 C++ 標準所定義的行為規範。這不僅關係到程式的可預期性,也影響到與標準庫或第三方程式碼的相容性。
定義 new
功能時需要滿足以下條件:
new-handler
時。new-handler
。delete
則有以下要求:
自訂的 new
和 delete
都需要遵循這些行為約定,確保記憶體管理行為與標準一致,避免導致不必要的錯誤。
delete
if you write placement new
當撰寫一個自定義的 new
替代版本,也就是指定記憶體分配位置時,也務必要記得提供對應delete
,防止程式因 exception 導致記憶體未正確釋放。即使 new
並不實際分配記憶體,delete
仍然需要存在以避免建構子可能的失敗情形。
此外需確認不會意外隱藏掉預設的全域 new
和 delete
函式,以免遮蔽其他部份的記憶體分配流程,並能以此確保程式行為一致性。可以透過 using ::operator new;
等語句引入標準版本,避免潛在錯誤。