/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_t
aldığı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_t
ikinci 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
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırmalar açılan menüsünden Tüm Yapılandırmalar'ı seçin.
Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.
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)