[解決済み] C/C++ プログラムの最大スタックサイズ
2022-06-06 03:25:52
質問
100×100の配列に対してDFSを行いたい。(配列の要素はグラフのノードを表すとします) したがって、最悪のケースを仮定すると、再帰的な関数呼び出しの深さは10000まで行くことができ、各呼び出しは最大で20バイトを取ります。つまり、スタックオーバーフローの可能性があるのでしょうか?
C/C++のスタックの最大サイズは何ですか?
gccの場合、両方とも指定してください。
1) Windowsのcygwin
2) Unix
一般的な制限事項は何ですか?
どのように解決するのですか?
Visual Studio では、デフォルトのスタック サイズは 1 MB だと思います。したがって、再帰深度が 10,000 の場合、各スタック フレームは最大で ~100 バイトとなり、DFS アルゴリズムには十分なはずです。
Visual Studio を含むほとんどのコンパイラーは、スタック サイズを指定できます。いくつかの (すべて?) Linux では、スタック サイズは実行ファイルの一部ではなく、OS の環境変数になります。この場合、スタックサイズを確認するには
ulimit -s
でチェックし、それを新しい値に設定するには、例えば
ulimit -s 16384
.
ここでは リンク には、gcc のデフォルトのスタックサイズがあります。
再帰を使わないDFS。
std::stack<Node> dfs;
dfs.push(start);
do {
Node top = dfs.top();
if (top is what we are looking for) {
break;
}
dfs.pop();
for (outgoing nodes from top) {
dfs.push(outgoing node);
}
} while (!dfs.empty())
関連
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] JavaScriptでStackとQueueを実装するには?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] どちらが速いですか?スタックアロケーションとヒープアロケーション
-
[解決済み】スタック巻き戻しとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++