2

私が知る限り、多くの要素を受け取り、それらをスタックに入れると、プロセスがクラッシュする可能性があります。ヒープはより安全で大きくなければならないので、ベクトル v を割り当てて要素を挿入すると、他のトピックで回答されているように、それらはヒープに保存されますか? 私のプログラムは長い入力でクラッシュすることはありませんよね?

また、ベクトルがヒープにあるとはどういう意味ですか?ベクトルオブジェクトは、他の関数に加えて、要素を含む最初のアドレスへの単なるポインターではありません

4

2 に答える 2

1

大量のデータを処理していて、その量が正確にわからない場合は、通常、ヒープ ストレージが正しい選択です。ただし、使用しすぎると、プログラムがメモリ不足になる可能性があります (リソースは有限です)。通常、これによりbad_alloc例外がスローされますが、例外をキャッチして処理しないと、プログラムが事実上クラッシュします。使用可能な正確なメモリ量は、オペレーティング システム、ハードウェア、コンパイラの構成など、多くの要因によって異なります。

標準vectorクラスは通常、データをヒープに格納しますが、オブジェクト自体はスタック上にある可能性があります (宣言方法によって異なります)。内部的には、必要に応じて再割り当てされる ( で割り当てられた) 動的配列のように考えることができますnew []。厳密に言えば、そのように実装されていない可能性がありますが、機能的には類似しています。

于 2013-11-07T15:50:42.790 に答える