私はC++プログラムでメモリを節約しようとしており、(Perlのように)変数のスコープとしてブロックを使用できるかどうかを知りたいと思います。ブロックを終了するときブロックを使用してC++で変数の範囲を管理できますか?
InputType input;
ResultType result;
{
// Block of code
MyHugeObject mho;
result = mho.superHeavyProcessing();
}
/*
My other code ...
*/
は、私は、オブジェクトが破壊されることを期待することができます:のは、私はいくつかの計算を実行し、結果を与える巨大なオブジェクトは、それを行うことは理にかなっていないとしましょうか?
厳密に言えば、デストラクターを呼び出すことは、オブジェクトの格納に使用されるメモリーを解放することと同じではありません。 – Constantin
質問に* huge *の単語があると仮定することは安全です。オブジェクトがヒープ上に大きなメモリのチャンクを割り当てて解放することを意味します(例:ベクトル)。 –
申し訳ありませんが、明示的なmallocが行われていない限り、MyHugeObjectがスタックに割り当てられ、ヒープには割り当てられないと思われます。私が間違っているなら、私を修正してください。 – 0fnt