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 サイトの他の関連記事を参照してください。