Heim >Backend-Entwicklung >C++ >Wie kann die Stapelgröße für GCC-C-Anwendungen unter Linux erhöht werden?

Wie kann die Stapelgröße für GCC-C-Anwendungen unter Linux erhöht werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 09:02:10773Durchsuche

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

Erhöhen der Stapelgröße unter Linux für GCC-C-Anwendungen

Unter Linux ist das Erhöhen der Stapelgröße für eine mit GNU kompilierte C-Anwendung anders zu macOS. OSX unterstützt die LD_FLAGS-Option, Linux hingegen nicht.

Um die Stapelgröße für eine einzelne Anwendung in Linux mithilfe von GCC zu erhöhen, können Sie die Funktion setrlimit wie folgt verwenden:

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

Hinweis: Vermeiden Sie auch bei dieser Methode die direkte Deklaration großer lokaler Variablen in main(). Stattdessen sollten solche Variablen in Funktionen definiert werden, die nach erfolgreicher Anpassung der Stack-Größe aufgerufen werden. Dies verhindert Stapelüberläufe, bevor die Größenänderung in main() wirksam wird.

Das obige ist der detaillierte Inhalt vonWie kann die Stapelgröße für GCC-C-Anwendungen unter Linux erhöht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn