Begrenzt C die Rekursionstiefe?
Im Gegensatz zu Python, das interpretiert wird und eine maximale Rekursionstiefe aufweist, ist C eine kompilierte Sprache. Daher wird seine Rekursionstiefe in erster Linie durch die maximale Größe des Stapels begrenzt, die typischerweise viel kleiner ist als der verfügbare RAM.
Das Stapellimit ist häufig auf Betriebssystemebene einstellbar. Unter macOS beträgt die Standard-Stack-Größe beispielsweise 8 MB, und dieser Grenzwert kann mit dem Shell-Befehl ulimit angepasst werden.
Die Stack-Größe allein bestimmt jedoch nicht vollständig die maximale Rekursionstiefe. Die Größe des Aktivierungsdatensatzes der rekursiven Funktion (auch als Stapelrahmen bezeichnet) muss ebenfalls berücksichtigt werden. Diese Größe kann mit dem Disassembler eines Debuggers ermittelt werden, der die Stapelzeigeranpassungen am Anfang und am Ende jeder Funktion anzeigt.
Durch das Verständnis der Stapelgröße und der Größe des Aktivierungsdatensatzes ist es möglich, die maximale Tiefe abzuschätzen Rekursion, die in einem bestimmten C-Programm erreichbar ist, bevor die Stapelüberlaufausnahme auftritt.
Das obige ist der detaillierte Inhalt vonWie tief kann die Rekursion in C gehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!