/Zc:sizedDealloc (Global Boyutlu Ayırmayı Kaldırma İşlevlerini Etkinleştir)

/Zc:sizeDealloc derleyici seçeneği, derleyiciye nesnenin boyutu kullanılabilir olduğunda tercihen genel operator delete veya operator delete[] ikinci bir parametre türü size_t olan işlevleri çağırmasını söyler. Bu işlevler serbest bırakıcı performansını iyileştirmek için parametresini size_t kullanabilir.

Sözdizimi

/Zc:sizedDealloc[-]

Açıklamalar

C++11 standardında, statik üye işlevleri operator delete tanımlayabilirsiniz ve operator delete[] bu işlem ikinci size_t bir parametreyi alır. Bunlar genellikle, nesne için daha verimli ayırıcılar ve serbest bırakıcılar uygulamak için işleç yeni işlevleriyle birlikte kullanılır. Ancak C++11, genel kapsamda denk bir serbest bırakma işlevleri kümesi tanımlamadı. C++11'de, ikinci size_t tür parametresine sahip genel serbest bırakma işlevleri yerleştirme silme işlevleri olarak kabul edilir. Bir boyut bağımsız değişkeni geçirilerek açıkça çağrılmalıdır.

C++14 standardı, derleyicinin davranışını değiştirir. Genel operator delete tanımladığınızda ve operator delete[] türünde ikinci bir parametre size_taldığınızda, üye kapsamı sürümleri çağrılmadığında ve nesnenin boyutu kullanılabilir olduğunda derleyici bu işlevleri çağırmayı tercih eder. Derleyici, boyut bağımsız değişkenini örtük olarak geçirir. Derleyici serbest bırakılan nesnenin boyutunu belirleyemiyorsa tek bağımsız değişken sürümleri çağrılır. Aksi takdirde, çağrılacak serbest bırakma işlevinin sürümünü seçmeye yönelik olağan kurallar yine de geçerlidir. Genel işlevlere yapılan çağrılar, kapsam çözümleme işlecini (::) deallocation işlev çağrısına önceden göndererek açıkça belirtilebilir.

Varsayılan olarak, Visual Studio 2015'te başlayan Visual C++ bu C++14 standart davranışını uygular. /Zc:sizedDealloc derleyici seçeneğini ayarlayarak bunu açıkça belirtebilirsiniz. Bu, hataya neden olabilecek bir değişikliği temsil eder. Eski davranışı korumak için /Zc:sizedDealloc- seçeneğini kullanın; örneğin, kodunuz türünde size_tikinci bir parametre kullanan yerleştirme silme işleçlerini tanımladığında. İkinci tür parametresine size_t sahip genel serbest bırakma işlevlerinin varsayılan Visual Studio kitaplık uygulamaları tek parametreli sürümleri çağırır. Kodunuz yalnızca tek parametreli genel işleç silme ve işleç silme[] sağlarsa, genel boyutlu serbest bırakma işlevlerinin varsayılan kitaplık uygulamaları genel işlevlerinizi çağırır.

/Zc:sizedDealloc derleyici seçeneği varsayılan olarak açıktır. /permissive- seçeneği /Zc:sizedDealloc'ı etkilemez.

Visual C++'daki uyumluluk sorunları hakkında daha fazla bilgi için bkz . Standart Dışı Davranış.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırmalar açılan menüsünden Tüm Yapılandırmalar'ı seçin.

  3. Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.

  4. Ek Seçenekler özelliğini /Zc:sizedDealloc veya /Zc:sizedDealloc- içerecek şekilde değiştirin ve tamam'ı seçin.

Ayrıca bkz.

MSVC Derleyicisi Seçenekleri
MSVC Derleyicisi Komut Satırı Söz Dizimi
/Zc (Uyumluluk)