/Zc:sizedDealloc (Włączanie globalnych funkcji dezalokacji z limitem rozmiaru)
/Zc:sizeDealloc kompilator informuje kompilator o preferencyjnym wywołaniu globalnych operator delete
lub operator delete[]
funkcji, które mają drugi parametr typusize_t
, gdy rozmiar obiektu jest dostępny. Te funkcje mogą używać parametru size_t
do optymalizowania wydajności przydziału.
Składnia
/Zc:sizeDealloc[-]
Uwagi
W standardzie C++11 można zdefiniować statyczne funkcje operator delete
składowe, operator delete[]
które przyjmują drugi size_t
parametr. Zazwyczaj są one używane w połączeniu z operatorami nowych funkcji w celu zaimplementowania bardziej wydajnych alokatorów i przydziałów dla obiektu. Jednak język C++11 nie zdefiniował równoważnego zestawu funkcji deallocation w zakresie globalnym. W języku C++11 globalne funkcje deallocation, które mają drugi parametr typu size_t
, są uznawane za funkcje usuwania umieszczania. Muszą być one jawnie wywoływane przez przekazanie argumentu rozmiaru.
Standard C++14 zmienia zachowanie kompilatora. Podczas definiowania globalnego operator delete
i operator delete[]
przy użyciu drugiego parametru typu size_t
kompilator preferuje wywoływanie tych funkcji, gdy wersje zakresu składowego nie są wywoływane i rozmiar obiektu jest dostępny. Kompilator niejawnie przekazuje argument rozmiaru. Wersje pojedynczego argumentu są wywoływane, gdy kompilator nie może określić rozmiaru obiektu, który jest cofnięty. W przeciwnym razie zwykle stosowane są reguły wybierania wersji funkcji deallocation. Wywołania funkcji globalnych mogą być jawnie określone przez umieszczenie operatora rozpoznawania zakresu (::
) w wywołaniu funkcji deallocation.
Domyślnie program Visual C++ uruchamiany w programie Visual Studio 2015 implementuje to standardowe zachowanie języka C++14. Można to jawnie określić, ustawiając opcję /Zc:sizeDealloc kompilatora. Oznacza to potencjalnie niezgodną zmianę. Użyj opcji /Zc:sizeDealloc-, aby zachować stare zachowanie, na przykład gdy kod definiuje operatory usuwania umieszczania, które używają drugiego parametru typu size_t
. Domyślne implementacje biblioteki programu Visual Studio globalnych funkcji cofania transakcji, które mają drugi parametr typu size_t
, wywołują wersje pojedynczych parametrów. Jeśli kod dostarcza tylko jednoparametrowy operator globalny delete i operator delete[], domyślne implementacje biblioteki globalnych funkcji deallocation wywołują funkcje globalne.
Opcja /Zc:sizeDealloc kompilatora jest domyślnie włączona. / permissive- opcja nie ma wpływu na /Zc:sizeDealloc.
Aby uzyskać więcej informacji na temat problemów ze zgodnością w programie Visual C++, zobacz Zachowanie niezgodne.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Z menu rozwijanego Konfiguracje wybierz pozycję Wszystkie konfiguracje.
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Zmodyfikuj właściwość Opcje dodatkowe, aby uwzględnić /Zc:sizeDealloc lub /Zc:sizeDealloc-, a następnie wybierz przycisk OK.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/Zc (Zgodność)