スタックメモリスペースが肥大化していることを示す警告サインはありますか?また、ヒープメモリの使用を開始する必要があるのはいつですか?そして、プロセッサ間に違いはありますか、スタックサイズの制限について考えていますか?
3 に答える
スタックのサイズは、リンク中に指定できます。これを行う正確な方法は、ツールチェーンによって異なります。32ビットプロセッサと64ビットプロセッサを除いて、スタックサイズに関するプロセッサベースの制限については知りません。
使いすぎている場合は、正解も不正解もありません。これは設計上の質問であり、要件によって異なります。スタックサイズはリンク中に設定されるため、一般的に言って、ヒープを使用するよりも最大データを厳しく制限します。一方、スタックの割り当てと割り当て解除は、ヒープを使用するよりも高速です。
通常、コンパイラとリンカのコマンドラインオプションを使用して、スタックのサイズを制御できます。
スタックオーバーフローが発生していますか(サイトではなくエラー)?それはあなたがスタックの限界を押し広げているという大きな手がかりになるでしょう。
まず、アプリ内のデフォルトスタックの大きさを把握し、次に何を詰め込んでいるかを考える必要があると思います。
他の多くの人が言っているように、スタックのサイズはコマンドラインオプションで制御できます。
ヒープの使用に関しては、私はこれに固執する傾向があります。
プログラムの開始時にクラスオブジェクトを動的に割り当てることができる場合は、そうします。動的に割り当てられたオブジェクトはメモリを断片化するため、実行中に動的に割り当てたり削除したりしない傾向があります。
プリミティブオブジェクトは、サイズがごくわずかであるため、通常はスタックに保持されます。