Es gibt nicht so etwas wie tatsächliche Grenze aber es gibt Grenzen. Alle Zeiger sind Variablen, die normalerweise im Stapel gespeichert werden nicht horten . Stack ist in der Regel klein (es ist möglich, seine Größe während einiger Verknüpfung zu ändern). Sagen wir also, Sie haben 4MB Stack, was eine ganz normale Größe ist. Und sagen wir, wir haben einen Zeiger, der 4 Byte groß ist (Zeigergrößen sind je nach Architektur, Ziel und Compilereinstellungen nicht gleich).
In diesem Fall 4 MB / 4 b = 1024
Die mögliche Höchstzahl wäre also 1048576, aber wir sollten die Tatsache nicht ignorieren, dass sich noch andere Dinge im Stapel befinden.
Einige Compiler können jedoch eine maximale Anzahl von Zeigerketten vorsehen, aber die Grenze ist die Stackgröße. Wenn Sie also die Stack-Größe während des Linkens auf unendlich erhöhen und eine Maschine mit unendlich viel Speicher haben, auf der ein Betriebssystem läuft, das diesen Speicher handhabt, werden Sie eine unbegrenzte Zeigerkette haben.
Wenn Sie int *ptr = new int;
und den Zeiger in den Heap setzen, ist das nicht so üblich Wegbegrenzung wäre die Heap-Größe, nicht der Stack.
EDIT Erkennen Sie einfach, dass 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, dann ist das eine schlechte Nachricht... :)