/Zc:sizedDealloc (Activer les fonctions de désallocation dimensionnées globales)
L’option du compilateur /Zc :sizeDealloc indique au compilateur d’appeler de préférence des fonctions globales operator delete
ou operator delete[]
qui ont un deuxième paramètre de type size_t
lorsque la taille de l’objet est disponible. Ces fonctions peuvent utiliser le size_t
paramètre pour optimiser les performances de deallocator.
Syntaxe
/Zc :sizedDealloc[-]
Notes
Dans la norme C++11, vous pouvez définir des fonctions operator delete
membres statiques et operator delete[]
prendre un deuxième size_t
paramètre. En règle générale, elles sont utilisées en combinaison avec les nouvelles fonctions d’opérateur pour implémenter des allocateurs et des deallocators plus efficaces pour l’objet. Toutefois, C++11 n’a pas défini un ensemble équivalent de fonctions de désallocation à l’étendue globale. Dans C++11, les fonctions de désallocation globales qui ont un deuxième paramètre de type size_t
sont considérées comme des fonctions de suppression de placement. Elles doivent être appelées explicitement en passant un argument de taille.
La norme C++14 modifie le comportement du compilateur. Lorsque vous définissez global operator delete
et operator delete[]
qui acceptent un deuxième paramètre de type size_t
, le compilateur préfère appeler ces fonctions lorsque les versions d’étendue de membre ne sont pas appelées et que la taille de l’objet est disponible. Le compilateur transmet implicitement l’argument de taille. Les versions d’argument unique sont appelées lorsque le compilateur ne peut pas déterminer la taille de l’objet libéré. Sinon, les règles habituelles pour choisir la version de la fonction de désallocation à appeler s’appliquent toujours. Les appels aux fonctions globales peuvent être spécifiés explicitement par l’opérateur de résolution d’étendue (::
) à l’appel de fonction de désallocation.
Par défaut, Visual C++ à partir de Visual Studio 2015 implémente ce comportement standard C++14. Vous pouvez spécifier cela explicitement en définissant l’option du compilateur /Zc :sizedDealloc . Cela représente un changement potentiellement cassant. Utilisez l’option /Zc :sizedDealloc- pour conserver l’ancien comportement, par exemple lorsque votre code définit des opérateurs de suppression de placement qui utilisent un deuxième paramètre de type size_t
. Les implémentations de bibliothèque Visual Studio par défaut des fonctions de désallocation globales qui ont le deuxième paramètre de type size_t
appellent les versions de paramètre unique. Si votre code fournit uniquement une suppression d’opérateur global à paramètre unique et une suppression d’opérateur[], les implémentations de bibliothèque par défaut des fonctions de désallocation de taille globale appellent vos fonctions globales.
L’option du compilateur /Zc :sizedDealloc est activée par défaut. L’option /permissive- n’affecte pas /Zc :sizedDealloc.
Pour plus d’informations sur les problèmes de conformité dans Visual C++, consultez Nonstandard Behavior.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Dans le menu déroulant Configurations , choisissez Toutes les configurations.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Modifiez la propriété Options supplémentaires pour inclure /Zc :sizedDealloc ou /Zc :sizedDealloc, puis choisissez OK.
Voir aussi
Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC
/Zc (Conformité)