要看你所謂的 "leak" 是要偵測什麼東西, 在用 ctor/dtor 改變物件的 lifetime 以外, 還需要考慮這個物件本身佔據的記憶體是否有被釋放, ctor/dtor 能夠管理的僅僅只有它的 sub-object 可能佔據的記憶體而已,為了讓使用者能更好好地控管所有資源, C++允許你多載new/delete operator, 你可以透過為特定類別多載new/delete 來追蹤物件的使用情形, 就像這個範例一樣
https://wandbox.org/permlink/aRJMu6Y4zlQiFZkU因為物件佔據的空間是可以被重複使用的, 所以 ctor/dtor 無法做到更細緻的追蹤, 所以不只是 placementnew, 連 array new 都會需要去多載來獲得所有資訊