作者uxijgil ()
看板EE_DSnP
標題[問題] memMgr.reset()
時間Thu May 7 22:16:13 2009
在 MemMgr 裡面的 reset()出現下列錯誤:
memMgr.h:191錯誤:
對 MemMgr<MemTestObj>::free(MemBlock<MemTestObj>*&)沒有匹配的函數
memMgr.h:220: 附註:備選為 void MemMgr<T>::free(T*) [with T = MemTestObj]
make[1]: *** [memCmd.o] Error 1
我是用 MemBlock<T>* temp 去接 _activeBlock 的位置
然後 _activeBlock 前進 , 再用 temp 來做記憶體釋放的動作
>> free(temp) ;
可是這一行就錯了 , 這樣不是呼叫 temp 的 default void free(*) 嗎 ?
還是要用其他的方式來還 ?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.172.215
1F:推 yangjiunru:new出來的東西要用delete刪除掉 05/07 22:21
2F:→ yangjiunru:如果真的要call free的話 因為class裡有個free 05/07 22:22
3F:→ yangjiunru:所以要用::free(temp) 05/07 22:23
4F:→ yangjiunru:不過還是用delete比較好 05/07 22:23
5F:推 ric2k1:free() 不會呼叫 destructor, 所以 char []_begin 不會被 05/07 22:25
6F:→ ric2k1:free 掉哦! 05/07 22:25
7F:推 wanga10219:delete 中 會先call destructor or free()? 05/07 22:47
8F:推 ric2k1:可以寫一個小程式試試看... 05/07 23:02
9F:→ uxijgil:謝謝,忘記MemBlock本身是被new出來的~~想說直接用free掉 05/08 00:33