Ändern der Stapelgröße für C-Anwendungen unter Linux mit GCC
Unter Linux gilt im Gegensatz zu macOS die Option LD_FLAGS=-Wl,-stack_size Wird vom GNU-Compiler nicht erkannt. Um die Stapelgröße für eine einzelne C-Anwendung anzupassen, kann die Funktion setrlimit programmgesteuert verwendet werden.
#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; }
Bei der Implementierung dieser Lösung ist es wichtig, große lokale Variablendeklarationen eher in Funktionen zu platzieren, die von main() aufgerufen werden als direkt in main(). Andernfalls kann es zu einem Stapelüberlauf kommen, bevor die Stapelgröße erhöht werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich die Stapelgröße einer C-Anwendung unter Linux mithilfe von GCC ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!