現在、適切なC++コードを作成しようとしています(小さなプロトタイプでは正常に動作しましたが、スタック上のクラスをインスタンス化します。ここでは、varはヘッダに定義されています。
私は最近、ヒープとスタックのインスタンス化(O m = new O()対O m())の違いを認識しました。
私はクラスを持っています。ここで、ヘッダーファイルはテーブル定義を保持する変数を定義しています。
ChunkLoader.hpp:
TablePartion * tablePartial_。
ChunkLoader.cpp:
ChunkLoader(){tablePartial_ =新しいTablePartial(真、0、1)。 }
今私は、スタック上tablePartialをインスタンス化したいが、私は使用することはできません。 TablePartial tablePartial_(true, 0, 1);
私は全盲のですか?スタックにtablePartial_をどのように割り当てることができますか? または、それは完全に間違っています。コンストラクタの後に範囲外になり、解放されるため、コンストラクタで使用できません。しかし、私はスタック変数がパフォーマンスに優れていることを読んでいるので、私はスタックインスタンス化を使用したいと思っています(と赤くなってdelete
)。
主な理由:可能であれば、スタックオーバーフローによりポインタを削除するように指示されました。 :)
はあなたがスタックにすることによって何を意味するかを明確になります。このために、あなたは
new
オペレータprivate
を作ることができますか?ローカル変数を意味しますか、コンストラクタ初期化子を親クラスに渡すことについて話していますか?私は少し混乱しています。 – octopusgrabbus'tablePartial_'は' ChunkLoader'クラスのメンバーですか、それとも単純に関数の変数ですか、それともグローバルですか? –
注意、 'O m();は変数とは関係ありません。それは関数宣言です。 – fredoverflow