Maison >développement back-end >C++ >Comment augmenter la taille de la pile pour les applications GCC C sous Linux ?

Comment augmenter la taille de la pile pour les applications GCC C sous Linux ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 09:02:10770parcourir

How to Increase the Stack Size for GCC C   Applications in Linux?

Augmentation de la taille de la pile sous Linux pour les applications GCC C

Sous Linux, augmenter la taille de la pile pour une application C compilée avec GNU est différent vers macOS. OSX prend en charge l'option LD_FLAGS, contrairement à Linux.

Pour augmenter la taille de la pile d'une seule application sous Linux à l'aide de GCC, vous pouvez utiliser la fonction setrlimit comme suit :

#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;
}

Remarque : Même avec cette méthode, évitez de déclarer de grosses variables locales directement dans main(). Au lieu de cela, ces variables doivent être définies dans des fonctions appelées une fois que la taille de la pile a été ajustée avec succès. Cela évite les débordements de pile avant que la modification de taille ne prenne effet dans main().

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn