12
C++メモリ割り当て演算子の形式はoperator new (size_t s)
です。 new
演算子にT
タイプのクラスオブジェクトをオーバーロードすると、演算子new
の入力引数(つまり、size_t s
)が正確にsizeof(T)
であることが保証されますか?はいの場合、この関数は引き続きサイズを入力引数として必要としますか?オーバーロード時のサイズ情報C++ new演算子
C++メモリ割り当て演算子の形式はoperator new (size_t s)
です。 new
演算子にT
タイプのクラスオブジェクトをオーバーロードすると、演算子new
の入力引数(つまり、size_t s
)が正確にsizeof(T)
であることが保証されますか?はいの場合、この関数は引き続きサイズを入力引数として必要としますか?オーバーロード時のサイズ情報C++ new演算子
基本クラスの演算子newをオーバーライドして派生クラス型のオブジェクトを割り当てることができます。
struct Base
{
void* operator new (size_t s) { ... }
int a;
};
struct Derived : public Base
{
int b;
};
Derived* d = new Derived;
Derived
ためのメモリを割り当て、Base::operator new(size_t)
が使用されます。引き数の値はsizeof(Derived)
になります。その引数がなければ、タイプDerived
のオブジェクトに適切な量のメモリを割り当てることができません。
これは私のフィールドではありませんが、[this](http://en.cppreference.com/w/cpp/memory/new/operator_new)が役立ちます。 – hargasinski