- ベストアンサー
new領域確保について
お世話になります new演算子の使用方法について教えてください。 new演算子は、動的確保を行なう際に使用する事は知っております。 もう1つの使用理由として、関数内のローカル変数領域が多大になる場合に 使用すると聞いた事があります これは、スタック領域を圧迫しないためと説明を受けた記憶があります これがあってるとしたら、どれくらいの変数容量を宣言する際に、new演算子を使用するのでしょうか? よろしくお願い致します
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> これがあってるとしたら、 完全に間違っているわけではありませんが、あっているともいえません。 まず、new演算子はオブジェクトを生成するためにに使用するものであって、領域を確保するのはそのための手段にすぎません。事実、operator newにはいくつかのバリエーションがあり、 char storage[sizeof(A)]; // 境界調整への配慮無し A* ptr = new(storage) A; のようなnewは領域の確保を行いません。 では、どんな場合にnewを使用するかですが、動的記憶域期間を持つ総体オブジェクトを生成する場合に使います。スタック領域を圧迫しないだけが目的であれば、静的記憶域期間を与えれば済むからです。