/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_tkompilator 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

  1. 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).

  2. Z menu rozwijanego Konfiguracje wybierz pozycję Wszystkie konfiguracje.

  3. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  4. 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ść)