Heim >Backend-Entwicklung >C++ >Können Compiler „neue' Aufrufe in C wegoptimieren?
Kann der Compiler Heap-Speicherzuweisungen eliminieren?
In C wird der neue Operator verwendet, um Speicher auf dem Heap zuzuweisen. Compiler können Code optimieren, einschließlich der Entfernung unnötiger Anweisungen. Können Compiler Heap-Speicherzuweisungen eliminieren, die mit new vorgenommen wurden?
Compiler-Verhalten
Untersuchungen zeigen, dass verschiedene Compiler Heap-Zuweisungen unterschiedlich handhaben:
Gültigkeit der Optimierung
Die Gültigkeit von Compiler-Optimierungen ist Gegenstand von Debatten. Einige argumentieren, dass der Compiler neue Aufrufe nicht optimieren darf, da diese möglicherweise ein beobachtbares Verhalten aufweisen (z. B. das Auslösen einer Ausnahme). Andere behaupten, dass die Optimierung neuer Aufrufe zulässig ist, wenn der Compiler garantieren kann, dass kein beobachtbares Verhalten beeinträchtigt wird.
C 14 Standard
N3664: Clarifying Memory Allocation hat das geklärt Regeln bezüglich Compileroptimierungen und Speicherzuweisung. Es ermöglicht Compilern, die Speicherzuweisungen in bestimmten Szenarien zu optimieren. Die Bestimmung wurde jedoch kritisiert, da sie möglicherweise gegen die Kausalität verstößt.
Zusätzliche Überlegungen
Schlussfolgerung
Der Compiler Die Möglichkeit, unsere Heap-Speicherzuweisungen zu optimieren, ist ein komplexes Thema, das Compilerverhalten, Sprachstandards und mögliche Ausnahmen betrifft. Während einige Compiler diese Optimierung auf Basis von N3664 implementieren, bleibt ihre Gültigkeit Gegenstand von Diskussionen und hängt von bestimmten Umständen ab, einschließlich des C-Standards und dem Vorhandensein benutzerdefinierter Speicherzuweiser.
Das obige ist der detaillierte Inhalt vonKönnen Compiler „neue' Aufrufe in C wegoptimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!