Heim > Artikel > Backend-Entwicklung > Warum ist der Zugriff auf „this“ nach „delete this“ in C strengstens verboten?
Achten Sie auf die undefinierten Konsequenzen von „dies löschen“; Die Prüfung seines Werts ist verboten
Bei Verwendung des „delete this“-Konstrukts in C wird in den C-FAQs dringend davon abgeraten, nachträglich auf den „this“-Zeiger zuzugreifen oder ihn zu manipulieren. Die Gründe für diese Einschränkung gehen über die drei vorherigen in den FAQ aufgeführten Gründe hinaus:
Grund für die Einschränkung Nr. 4: Der Wert von „this“ nach dem Aufruf von „delete this“ ist von Natur aus nicht spezifiziert und undefiniert . Daher rufen alle nachfolgenden Versuche, damit zu interagieren, einschließlich, aber nicht beschränkt auf die folgenden, garantiert undefiniertes Verhalten hervor:
Mögliche Folgen des Ignorierens der Einschränkung:
Während einige Compiler in diesem speziellen Fall möglicherweise undefiniertes Verhalten verarbeiten in vorhersehbarer Weise erfolgt, eine Garantie gibt es nicht. Die C-Spezifikation ermöglicht es dem Compiler ausdrücklich, jedes Verhalten zu bestimmen, wenn er undefinierte Aktionen ausführt. Dies könnte bizarre oder sogar katastrophale Folgen haben, einschließlich, aber nicht beschränkt auf Datenbeschädigung oder vollständigen Systemausfall.
Sichere Alternative:
Um diese Einschränkung zu umgehen, verwenden Sie it Es wird empfohlen, vor dem Aufruf von „delete this“ eine Kopie des „this“-Zeigers (z. B. als Ganzzahl) zu erstellen, um sicherzustellen, dass der Wert des ursprünglichen Zeigers danach zugänglich und vorhersehbar bleibt Löschung.
Das obige ist der detaillierte Inhalt vonWarum ist der Zugriff auf „this“ nach „delete this“ in C strengstens verboten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!