看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 最近在練習寫memory pool 做完之後想拿來實際使用看看 想法上是去overload global new/delete operator new沒什麼問題 但delete就麻煩了 因為delete是overload到原本的 所以像是STL裡面觸發到delete的地方 就會跑到我寫的地方去 當然我也是可以判斷它要釋放的memory是不是我分配出去的 如果不是就free它 但這樣似乎不太好 所以想要像new一樣 寫overload一個非預設的delete 再用#define去蓋掉原本的delete 但這樣compiler就不讓我過了@@ error C2541: 'delete' : cannot delete objects that are not pointers error C2146: syntax error : missing ';' before identifier 'ps' 想請各位板友看看應該怎麼做才好 或者memory pool的使用其實不該去overload global operator? 有什麼其它的作法嗎 謝謝 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/LyB6zLkE http://codepad.org/S3jIu16t -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.120.131
linotwo:你可以讓你要監控的 class 去繼承共同的 parent 11/16 11:00
linotwo:再去 overload parent class 的 new /delete 11/16 11:01
NIKE74731:但這樣會造成使用上的麻煩 尤其當某些class已有繼承關係 11/16 11:09
linotwo:http://codepad.org/4RLxn2sI 11/16 17:25
linotwo:使用上與一般的 new / delete 完全一樣, 11/16 17:26
linotwo:只有宣告的部分需要修改而已。 11/16 17:27
NIKE74731:如果是這種作法 那我新增任一類別 便要先繼承MemoryBase 11/16 17:43
NIKE74731:在使用上仍然不便Orz 11/16 17:45
linotwo:習慣就好了 (拍拍 11/16 17:51
legnaleurc:如果你在用 C++ 的話,應該是可以做 allocator 11/17 00:47