可能性の重複:
C++ virtual function table memory costC++:仮想化によるメモリオーバーヘッド?
私はジュストその読んだ:http://www.parashift.com/c++-faq-lite/virtual-functions.htmlを、私はメモリのオーバーヘッドが原因仮想性にあるのだろうか。 私は現在、スーパーコンピュータ向けに最適化されたコードを書いています。私は、読みやすいコードとメモリ消費量の間に良いバランスを見つける必要があります。それは以下のクラスのためのメモリのオーバーヘッドがどうなるかどのように機能するかを理解するために
:
class AbstractA {/* SOMETHING */};
class AbstractB {/* SOMETHING */};
class A : public AbstractA {/* SOMETHING */};
class B : public AbstractB {/* SOMETHING */};
class A2 : public A {/* SOMETHING */};
class B2 : public B {/* SOMETHING */};
class AbstractAB : public AbstractA, public AbstractB {/* SOMETHING */};
class AbstractAB2 : public AbstractAB {/* SOMETHING */};
が、私は、各クラスの10億個のオブジェクトがあると、私は非静的メモリ消費について気にする必要があり。オブジェクトの種類ごとにどれぐらいかかりますか? (AbstractAの各仮想メソッドが "A"タイプのオブジェクトごとにポインタを作成する場合、私は死ぬ...)
'sizeof()'演算子は理由があります。 – Mysticial
@ミステリー:それはあなたにオブジェクトごとのコストだけを伝えます。通常、クラスごとの費用もあります。 –
@MikeSeymourもし彼が各クラスの10億のインスタンスを持っているならば、クラスごとのコストはオブジェクトごとのコストではごくわずかです。 – Mysticial