最近、CやC ++を書いているときに、Javaの場合とは異なり、それがオプションであるという理由だけで、すべての変数をスタック上で宣言します。
しかし、スタック上で大きなものを宣言するのは悪い考えだと聞いたことがあります。
- なぜこれが当てはまるのですか?スタックオーバーフローが関係していると思いますが、なぜ発生するのかはあまりわかりません。
- スタック上のものはどれくらい多すぎますか?
スタックに100MBのファイルを配置しようとはしていません。文字列バッファーなどとして使用するために、数十キロバイトの配列を配置しようとしています。これはスタックの使用量が多すぎませんか?
(重複する場合は申し訳ありませんが、スタックの検索はスタックオーバーフローへの参照を提供し続けます。呼び出しスタックタグさえありません。抽象タグを使用しました。)
std::vector<int>
変数は多くのスタックスペースを消費せず、ほとんどのデータはヒープ内にあります。