Kann der Compiler Heap -Speicherzuweisungen eliminieren? Compiler können den Code optimieren, einschließlich der Entfernung unnötiger Aussagen. Können Compiler Heap -Speicherzuweisungen eliminieren, die mit Neuen hergestellt wurden?
Compiler Behaviour
Forschungsergebnisse zeigen, dass verschiedene Compiler mit Heap -Allokationen mit Heap -Allokationen umgehen:
g (5.2.0). ) Optimiert den neuen Anruf auch mit vollständigen Optimierungsflags.
c 14 Standard
n3664: Die Klärung der Speicherzuweisung klären die Regeln für Kompiliereroptimierungen und Gedächtnisverkäufe. Damit können Compiler in bestimmten Szenarien rund um Speicherzuweisungen optimieren. Die Bestimmung wurde jedoch kritisiert, da sie möglicherweise gegen die Kausalität verstößt. Operator Neue Implementierungen in verschiedenen Übersetzungseinheiten könnten die Gültigkeit von Compiler -Optimierungen im Zusammenhang mit Heap -Zuteilungen beeinflussen. Während einige Compiler diese Optimierung basierend auf N3664 implementieren, bleibt ihre Gültigkeit ein Thema der Diskussion und hängt von bestimmten Umständen ab, einschließlich des C -Standards und dem Vorhandensein von benutzerdefinierten Speicherallocatoren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3