/Zc:sizedDealloc (Funktionen für die Aufhebung von Zuordnungen mit globaler Größe aktivieren)

Die Compileroption "/Zc:sizedDealloc " weist den Compiler an, global operator delete oder operator delete[] funktionen bevorzugt aufzurufen, die einen zweiten Typparameter size_t aufweisen, wenn die Größe des Objekts verfügbar ist. Diese Funktionen können den Parameter verwenden, um die size_t Leistung von Deallocator zu optimieren.

Syntax

/Zc:sizedDealloc[-]

Hinweise

Im C++11-Standard können Sie statische Memberfunktionen operator delete definieren und operator delete[] einen zweiten Parameter size_t verwenden. In der Regel werden diese in Kombination mit operator neuen Funktionen verwendet, um effizientere Allokatoren und Deallocators für das Objekt zu implementieren. C++11 definiert jedoch keinen entsprechenden Satz von Deallocation-Funktionen auf globaler Ebene. In C++11 gelten globale Deallocation-Funktionen mit einem zweiten Typparameter size_t als Platzierungslöschfunktionen. Sie müssen explizit aufgerufen werden, indem sie ein Größenargument übergeben.

Der C++14-Standard ändert das Verhalten des Compilers. Wenn Sie global operator delete definieren und operator delete[] einen zweiten Parameter vom Typ size_tverwenden, empfiehlt es sich, diese Funktionen aufzurufen, wenn Memberbereichsversionen nicht aufgerufen werden und die Größe des Objekts verfügbar ist. Der Compiler übergibt das Size-Argument implizit. Die Einzelnen Argumentversionen werden aufgerufen, wenn der Compiler die Größe des Objekts, das abgeglichen wird, nicht bestimmen kann. Andernfalls gelten die üblichen Regeln für die Auswahl der Version der Deallocation-Funktion, die aufgerufen werden soll. Aufrufe der globalen Funktionen können explizit angegeben werden, indem der Bereichsauflösungsoperator (::) für den Deallocation-Funktionsaufruf voraussteht.

Standardmäßig implementiert Visual C++ ab Visual Studio 2015 dieses C++14-Standardverhalten. Sie können dies explizit angeben, indem Sie die Compileroption "/Zc:sizedDealloc " festlegen. Dies stellt eine potenziell unterbrechende Änderung dar. Verwenden Sie die Option "/Zc:sizeDealloc" , um das alte Verhalten beizubehalten, z. B. wenn Ihr Code Löschoperatoren für die Platzierung definiert, die einen zweiten Parameter vom Typ size_tverwenden. Die standardmäßigen Visual Studio-Bibliotheksimplementierungen der globalen Deallocation-Funktionen mit dem zweiten Typparameter size_t rufen die Versionen einzelner Parameter auf. Wenn Ihr Code nur einen globalen Operator mit nur einem Parameter löscht und operator delete[] bereitstellt, rufen die Standardbibliotheksimplementierungen der globalen Deallocation-Funktionen Ihre globalen Funktionen auf.

Die Compileroption "/Zc:sizedDealloc " ist standardmäßig aktiviert. Die Option "/permissive" wirkt sich nicht auf /Zc:sizedDealloc aus.

Weitere Informationen über Konformitätsprobleme in Visual C++ finden Sie unter Nonstandard Behavior.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Wählen Sie im Dropdownmenü "Konfigurationen" die Option "Alle Konfigurationen" aus.

  3. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

  4. Ändern Sie die Eigenschaft "Zusätzliche Optionen" so, dass sie "/Zc:sizeDealloc" oder "/Zc:sizedDealloc" enthält, und wählen Sie dann "OK" aus.

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/Zc (Übereinstimmung)