Sdílet prostřednictvím


/Zc:sizedDealloc (povolení funkcí zrušení přidělení v globálním měřítku)

Možnost kompilátoru /Zc:sizeDealloc říká kompilátoru, aby přednostně volal globální operator delete funkce nebo operator delete[] funkce, které mají druhý parametr typu size_t , když je k dispozici velikost objektu. Tyto funkce můžou tento parametr použít k optimalizaci výkonu size_t uvolnění.

Syntaxe

/Zc:sizedDealloc[-]

Poznámky

Ve standardu C++11 můžete definovat statické členské funkce operator delete a operator delete[] zabrat druhý size_t parametr. Obvykle se používají v kombinaci s novými funkcemi operátoru k implementaci efektivnějších alokátorů a uvolnění pro objekt. C++11 však nedefinoval ekvivalentní sadu funkcí deallocation v globálním oboru. V jazyce C++11 jsou funkce globálního přidělení, které mají druhý parametr typu size_t , považovány za funkce odstranění umístění. Musí být explicitně volána předáním argumentu velikosti.

Standard C++14 změní chování kompilátoru. Když definujete globální operator delete a operator delete[] který vezme druhý parametr typu size_t, kompilátor dává přednost volání těchto funkcí, pokud nejsou vyvolány verze oboru člena a je k dispozici velikost objektu. Kompilátor implicitně předá argument velikosti. Verze jednoho argumentu se volají, když kompilátor nedokáže určit velikost uvolněného objektu. Jinak platí obvyklá pravidla pro volbu verze funkce zrušení přidělení, která se mají vyvolat. Volání globálních funkcí mohou být explicitně určena před voláním operátoru překladu rozsahu (::) do volání funkce uvolnění.

Ve výchozím nastavení visual C++ počínaje sadou Visual Studio 2015 implementuje toto standardní chování jazyka C++14. Můžete to explicitně zadat nastavením parametru kompilátoru /Zc:sizedDealloc . To představuje potenciálně zásadní změnu. Pomocí parametru /Zc:sizeDealloc- zachováte staré chování, například když váš kód definuje operátory odstranění umístění, které používají druhý parametr typu size_t. Výchozí implementace knihovny sady Visual Studio globálních funkcí deallocation, které mají druhý parametr typu size_t , vyvolávají verze s jedním parametrem. Pokud váš kód poskytuje pouze globální operátor s jedním parametrem delete a operator delete[], výchozí implementace knihoven funkcí globální velikosti uvolnění vyvolá globální funkce.

Možnost kompilátoru /Zc:sizedDealloc je ve výchozím nastavení zapnutá. Možnost /permissive- nemá vliv na /Zc:sizedDealloc.

Další informace o problémech s shodami v jazyce Visual C++ naleznete v tématu Nestandardní chování.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. V rozevírací nabídce Konfigurace zvolte Všechny konfigurace.

  3. Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.

  4. Upravte vlastnost Další možnosti tak, aby zahrnovala /Zc:sizedDealloc nebo /Zc:sizedDealloc- a pak zvolte OK.

Viz také

Parametry kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/Zc (shoda)