[問題] operator new[] 和 delete[] 混用

看板C_and_CPP作者 (唉唷喂)時間16年前 (2009/05/22 02:49), 編輯推噓5(506)
留言11則, 6人參與, 最新討論串1/4 (看更多)
(C++ Primer p760, operator new != new) 由於特殊需求,要加強效率,在配置空間時, 不必呼叫 constructor (會浪費時間) 但釋放時,又必須呼叫 destructor T* data = static_cast<T*>(operator new[](size * sizeof(T))); delete []T; 我想問的是,delete 是否不能這樣寫? 會不會有 undefined behavior ? 還是一定要用 operator delete[](T); ? 這樣又要如何呼叫 destructor 呢囧 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.245.11

05/22 10:56, , 1F
trival constructor 應該不會花時間吧
05/22 10:56, 1F

05/22 10:58, , 2F
我的T是template,可能會是要浪費很多時間的物件!!
05/22 10:58, 2F

05/22 11:24, , 3F
我好奇 你不呼叫 ctor 你要怎麼使用它
05/22 11:24, 3F

05/22 11:36, , 4F
是要放別人給的東西(我要做dynamic array)
05/22 11:36, 4F

05/22 12:50, , 5F
如果你的T()會耗很多時間,表示是有做事的,那怎能省略?
05/22 12:50, 5F

05/22 12:51, , 6F
如果你要把 T() 省略,表示裡面跟本不需要做事,對吧?
05/22 12:51, 6F

05/22 13:52, , 7F
在設計上來說,那是T的責任吧
05/22 13:52, 7F

05/22 13:53, , 8F
你的容器一開始沒初始化T,整個容器都處在不安定狀態
05/22 13:53, 8F

05/22 13:54, , 9F
你敢寫我不敢用 XD
05/22 13:54, 9F

05/22 14:05, , 10F
寫T的人明明提供ctor容器卻不用 XD
05/22 14:05, 10F

05/22 17:49, , 11F
我也覺得這個要求很妙 XDD
05/22 17:49, 11F
文章代碼(AID): #1A5XB7m_ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A5XB7m_ (C_and_CPP)