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; 等語句引入標準版本,避免潛在錯誤。