Re: [問題] operator new[] 和 delete[] 混用
※ 引述《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)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章