正文
Item 50中解釋了在什么情況下你可能想實現(xiàn)自己版本的operator new和operator delete,但是沒有解釋當你實現(xiàn)的時候需要遵守的約定。遵守這些規(guī)則并不是很困難,但是它們其中有一些并不直觀,所以知道這些規(guī)則是什么很重要。
1. 定義operator new的約定
1.1 約定列舉
我們以operator new開始。實現(xiàn)一個一致的operator new需要有正確的返回值,在沒有足夠內(nèi)存的時候調(diào)用new-handling函數(shù)(見Item 49),并且做好準備處理沒有內(nèi)存可分配的情況。你也想避免無端的隱藏“正?!卑姹镜膎ew,但這是一個類接口的問題而不是實現(xiàn)需求問題;它會在Item 52中進行處理。
Operator new的返回值部分很簡單,因為operator new事實上會嘗試多次分配內(nèi)存,在內(nèi)次分配失敗之后都會調(diào)用new-handling函數(shù)。這里的假設(shè)是new-handling函數(shù)可能會做一些事情來釋放一些內(nèi)存。只有在指向new-handling函數(shù)的指針為null的情況下,operator new才會