Linux での GCC C アプリケーションのスタック サイズの増加
Linux では、GNU でコンパイルされた C アプリケーションのスタック サイズの増加は、他のものとは異なりますmacOSに。 OSX は LD_FLAGS オプションをサポートしていますが、Linux はサポートしていません。
GCC を使用して Linux で単一アプリケーションのスタック サイズを増やすには、次のように setrlimit 関数を使用できます:
#include <sys/resource.h> int main (int argc, char **argv) { const rlim_t kStackSize = 16 * 1024 * 1024; // min stack size = 16 MB struct rlimit rl; int result; result = getrlimit(RLIMIT_STACK, &rl); if (result == 0) { if (rl.rlim_cur < kStackSize) { rl.rlim_cur = kStackSize; result = setrlimit(RLIMIT_STACK, &rl); if (result != 0) { fprintf(stderr, "setrlimit returned result = %d\n", result); } } } // ... return 0; }
注意: このメソッドを使用する場合でも、大きなローカル変数を main() で直接宣言することは避けてください。代わりに、そのような変数は、スタック サイズが正常に調整された後に呼び出される関数で定義する必要があります。これにより、main() でサイズ変更が有効になる前にスタック オーバーフローが発生するのを防ぎます。
以上がLinux で GCC C アプリケーションのスタック サイズを増やすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。