1 #include <sys/resource.h> 2 3 // ... 4 const rlim_t stackSize = 12 * 1024 * 1024; // 12MiB 5 struct rlimit rl; 6 int result; 7 result = getrlimit(RLIMIT_STACK, &rl); 8 if (result == 0) 9 { 10 if (rl.rlim_cur < stackSize) 11 { 12 rl.rlim_cur = stackSize; 13 result = setrlimit(RLIMIT_STACK, &rl); 14 if (result != 0) 15 { 16 fprintf(stderr, "Error setting stack size = %d\n", result); 17 } 18 } 19 } 20 // ...
Der obige Code fragt mittels getrlimit zunächst die aktuelle (maximale) Stackgöße ab, überprüft dann, ob ein weiteres Erhöhen mit setrlimit nötig ist.
Falls das Erhöhen erfolgreich ist, gibt setrlimit 0 zurück.
Mehr (interessante) Limits lassen sich durch diese Vorgehensweise setzen, siehe hier.
Für Windows PE Dateien muss die Stackgröße fest in das Programm kompiliert werden. Dazu gibt es entsprechende Compilerswitches.
Keine Kommentare:
Kommentar veröffentlichen