Heim > Backend-Entwicklung > C++ > Können C-Compiler die Zuweisung von Heap-Speicher mithilfe von „new' optimieren?

Können C-Compiler die Zuweisung von Heap-Speicher mithilfe von „new' optimieren?

Patricia Arquette
Freigeben: 2024-12-02 02:15:11
Original
504 Leute haben es durchsucht

Can C   Compilers Optimize Out Heap Memory Allocations Using `new`?

Optimierung der Out-Heap-Speicherzuweisungen

In C wird der new-Operator üblicherweise zum Zuweisen von Speicher auf dem Heap verwendet. Es stellt sich jedoch die Frage, ob der Compiler diese Heap-Speicherzuweisungen optimieren darf.

Das Argument für die Optimierung

Gemäß N3664: Clarifying Memory Allocation darf der Compiler rund um den Speicher optimieren Zuteilungen. Diese Optimierung basiert auf der „Als-ob“-Regel, die besagt, dass Implementierungen Anforderungen ignorieren können, solange das Ergebnis so aussieht, als ob die Anforderungen erfüllt wären. Da new eine Ausnahme auslösen kann, argumentieren einige, dass es aufgrund seines beobachtbaren Verhaltens nicht optimiert werden kann.

Gegenargument: Die „As-If“-Regel

Befürworter der Optimierung behaupten jedoch, dass die Auch in diesem Fall gilt die „Als-ob“-Regel. Sie argumentieren, dass der Compiler feststellen kann, dass die Zuweisung keine Ausnahme auslöst und dass das Weglassen des neuen Aufrufs nicht gegen die Regel verstoßen würde. Darüber hinaus wird argumentiert, dass der Compiler nachweisen kann, dass kein globaler Ersatzoperator new das beobachtbare Verhalten beeinflussen würde, sodass er die Optimierung durchführen kann.

Variationen und Ausnahmen

Während die meisten Compiler keine Optimierung durchführen Bei neuen Anrufen bestehen einige Ausnahmen. Clang beispielsweise hat die Optimierung implementiert, die später Teil von C 14 wurde. In Fällen, in denen eine nicht werfende Version von new verwendet wird oder ein Ersatzoperator new möglich ist, wird die Optimierung jedoch möglicherweise nicht durchgeführt.

Fazit

Die Fähigkeit des Compilers, unsere Heap-Speicherzuweisungen zu optimieren, ist ein komplexes Thema mit unterschiedlichen Interpretationen der „Als-ob“-Regel. Während einige Implementierungen eine solche Optimierung unter bestimmten Bedingungen zulassen, halten sich andere strikt an den Standard und führen ihn nicht durch.

Das obige ist der detaillierte Inhalt vonKönnen C-Compiler die Zuweisung von Heap-Speicher mithilfe von „new' optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage