Es gibt kein echtes Limit, aber es gibt ein Limit. Alle Zeiger sind Variablen, die normalerweise im Stapel und nicht im Heap gespeichert werden . Der Stapel ist normalerweise klein (es ist möglich, seine Größe während einer Verknüpfung zu ändern). Nehmen wir also an, Sie haben einen 4-MB-Stapel, was eine ganz normale Größe ist. Nehmen wir an, wir haben einen Zeiger mit einer Größe von 4 Bytes (die Zeigergrößen sind je nach Architektur, Ziel- und Compilereinstellungen nicht gleich).
In diesem Fall 4 MB / 4 b = 1024
wäre die maximal mögliche Anzahl 1048576, aber wir sollten die Tatsache nicht ignorieren, dass einige andere Dinge im Stapel sind.
Einige Compiler haben möglicherweise die maximale Anzahl von Zeigerketten, aber die Grenze ist die Stapelgröße. Wenn Sie also die Stapelgröße während der Verknüpfung mit unendlich erhöhen und einen Computer mit unendlichem Speicher haben, auf dem das Betriebssystem ausgeführt wird, das diesen Speicher verarbeitet, haben Sie eine unbegrenzte Zeigerkette.
Wenn Sie int *ptr = new int;
Ihren Zeiger verwenden und in den Heap setzen, ist dies nicht die übliche Beschränkung auf die Größe des Heapspeichers und nicht auf den Stapel.
BEARBEITEN Erkenne das einfach infinity / 2 = infinity
. Wenn die Maschine mehr Speicher hat, erhöht sich die Zeigergröße. Wenn also der Speicher unendlich ist und die Größe des Zeigers unendlich ist, sind es schlechte Nachrichten ... :)