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

看板C_and_CPP (C/C++)作者 (CA)時間16年前 (2009/05/22 14:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《ilway25 (唉唷喂)》之銘言: : 由於特殊需求,要加強效率,在配置空間時, : 不必呼叫 constructor (會浪費時間) : 但釋放時,又必須呼叫 destructor : T* data = static_cast<T*>(operator new[](size * sizeof(T))); : delete []T; : 我想問的是,delete 是否不能這樣寫? : 會不會有 undefined behavior ? : 還是一定要用 operator delete[](T); ? : 這樣又要如何呼叫 destructor 呢囧 謝謝! 不是 delete 的問題,這個容器初始化就己經一團糟了 你只配置空間,不初始化T 我猜之後會有個操作來"初始化" T:(初始化程序只能交給ctor,這裡的初始化是錯誤說法) data[i] = T(); 問題是 data[i] 裡的 T 沒初始化 所以它的 operator = 根本不存在 或者說所有的 member 都不能正常使用 memcpy ? 只是掉進另一個泥沼而己 如果 T 的初始化很慢,讓 T 自己處理 你不會比 T 還了解它要怎麼配置的 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.146.194.91 ※ 編輯: legnaleurc 來自: 122.146.194.91 (05/22 14:05)
文章代碼(AID): #1A5a0QxZ (C_and_CPP)
文章代碼(AID): #1A5a0QxZ (C_and_CPP)