Maison >développement back-end >C++ >Comment ajuster la taille de la pile pour les applications C sous Linux à l'aide du compilateur GNU ?
Ajustement de la taille de la pile sous Linux pour les applications C à l'aide du compilateur GNU
Sous Linux, la taille de la pile pour une application C compilée avec le compilateur GNU peut être modifié pour éviter les erreurs de débordement de pile. Bien que la syntaxe utilisée dans OSX (LD_FLAGS= -Wl,-stack_size,0x100000000) puisse ne pas fonctionner sous SUSE Linux, il existe des méthodes alternatives pour obtenir le même résultat.
Une approche consiste à augmenter la taille de la pile par programme dans l'application elle-même. Cela peut être fait en utilisant la fonction setrlimit fournie par le fichier
#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; }
En augmentant la taille de la pile au sein de l'application, vous pouvez vous assurer qu'elle dispose d'une allocation de mémoire suffisante pour gérer des opérations complexes ou des structures de données volumineuses sans rencontrer d'erreurs de débordement de pile. Il est important de noter, cependant, que les variables locales trop volumineuses doivent être déclarées dans les fonctions appelées depuis main pour éviter les débordements de pile avant que le code getrlimit/setrlimit ne prenne effet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!