なぜ次のように書くことができないのですか?スタックに任意のサイズの配列を割り当てることができないのはなぜですか?
char acBuf[nSize];
スタックが過成長しないようにするにはどうすればよいですか? また、私がいつも数百キロバイトしかかからないようにすれば、同様のことをする可能性はありますか?
私が知る限り、std::string
は、15文字以下であれば、メンバーのメモリを使用して割り当てられた文字列を保存します。文字列が長い場合にのみ、このメモリを使用してヒープ割り当てメモリのアドレスを格納します。
実行時にスタックがにどのようにアライメントされるかは、コンパイル時に100%決定されなければならないようです。本当?何故ですか?
はい、該当します。 C++はVLAをサポートしていません。 –
スタックに割り当てる場合(理論上)、各スタックフレームのすべてのメモリがそのスコープの先頭に割り当てられます。なぜ、フリーストアを使用してメモリが割り当てられるのかという理由で、ダイナミックストレージがあるのです。 – George