ホームページ >バックエンド開発 >C++ >GCC を使用して Linux で C アプリケーションのスタック サイズを変更するにはどうすればよいですか?

GCC を使用して Linux で C アプリケーションのスタック サイズを変更するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 19:22:13335ブラウズ

How Can I Change the Stack Size of a C   Application in Linux Using GCC?

GCC を使用した Linux での C アプリケーションのスタック サイズの変更

Linux では、macOS とは異なり、LD_FLAGS=-Wl,-stack_size オプションはGNU コンパイラによって認識されません。単一の C アプリケーションのスタック サイズを調整するには、setrlimit 関数をプログラムで利用できます。

#include <sys/resource.h>

int main() {
  const rlim_t kStackSize = 16 * 1024 * 1024;  // 16 MB

  struct rlimit rl;
  int result;

  // Get current stack size limits
  result = getrlimit(RLIMIT_STACK, &rl);
  if (result == 0) {
    // If current stack size is less than desired, adjust it
    if (rl.rlim_cur < kStackSize) {
      rl.rlim_cur = kStackSize;
      result = setrlimit(RLIMIT_STACK, &rl);
      if (result != 0) {
        // Error handling
      }
    }
  }

  // Your code...

  return 0;
}

このソリューションを実装するときは、main() から呼び出される関数内に大きなローカル変数宣言を配置することが重要です。 main() で直接行うよりも。そうしないと、スタック サイズを増やす前にスタック オーバーフローが発生する可能性があります。

以上がGCC を使用して Linux で C アプリケーションのスタック サイズを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。