Bagikan melalui


/Zc:sizedDealloc (Aktifkan Fungsi Dealokasi Berukuran Global)

Opsi pengkompilasi /Zc:sizedDealloc memberi tahu pengkompilasi untuk lebih memilih memanggil global operator delete atau operator delete[] fungsi yang memiliki parameter jenis size_t kedua saat ukuran objek tersedia. Fungsi-fungsi ini dapat menggunakan size_t parameter untuk mengoptimalkan performa deallocator.

Sintaks

/Zc:sizedDealloc[-]

Keterangan

Dalam standar C++11, Anda dapat menentukan fungsi operator delete anggota statis dan operator delete[] yang membutuhkan parameter kedua size_t . Biasanya ini digunakan dalam kombinasi dengan fungsi baru operator untuk mengimplementasikan alokator dan dealokator yang lebih efisien untuk objek. Namun, C++11 tidak menentukan serangkaian fungsi dealokasi yang setara pada cakupan global. Di C++11, fungsi dealokasi global yang memiliki parameter kedua size_t jenis dianggap sebagai fungsi penghapusan penempatan. Mereka harus secara eksplisit dipanggil dengan meneruskan argumen ukuran.

Standar C++14 mengubah perilaku pengkompilasi. Ketika Anda menentukan global operator delete dan operator delete[] yang mengambil parameter kedua jenis size_t, pengkompilasi lebih suka memanggil fungsi-fungsi ini ketika versi cakupan anggota tidak dipanggil dan ukuran objek tersedia. Kompiler meneruskan argumen ukuran secara implisit. Versi argumen tunggal dipanggil ketika pengkompilasi tidak dapat menentukan ukuran objek yang dibatalkan alokasinya. Jika tidak, aturan biasa untuk memilih versi fungsi dealokasi yang akan dipanggil masih berlaku. Panggilan ke fungsi global dapat ditentukan secara eksplisit dengan menambahkan operator resolusi cakupan (::) ke panggilan fungsi dealokasi.

Secara default, Visual C++ yang dimulai di Visual Studio 2015 mengimplementasikan perilaku standar C++14 ini. Anda dapat secara eksplisit menentukan ini dengan mengatur opsi pengkompilasi /Zc:sizedDealloc . Ini mewakili perubahan yang berpotensi melanggar. Gunakan opsi /Zc:sizedDealloc- untuk mempertahankan perilaku lama, misalnya, ketika kode Anda menentukan operator penghapusan penempatan yang menggunakan parameter kedua jenis size_t. Implementasi pustaka Visual Studio default dari fungsi dealokasi global yang memiliki parameter kedua jenis size_t memanggil versi parameter tunggal. Jika kode Anda hanya menyediakan penghapusan operator global parameter tunggal dan penghapusan operator[], implementasi pustaka default dari fungsi dealokasi berukuran global memanggil fungsi global Anda.

Opsi pengkompilasi /Zc:sizedDealloc aktif secara default. Opsi /permissive- tidak memengaruhi /Zc:sizedDealloc.

Untuk informasi selengkapnya tentang masalah kesuaian di Visual C++, lihat Perilaku Nonstandar.

Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Dari menu drop-down Konfigurasi , pilih Semua Konfigurasi.

  3. Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.

  4. Ubah properti Opsi Tambahan untuk menyertakan /Zc:sizedDealloc atau /Zc:sizedDealloc- lalu pilih OK.

Baca juga

Opsi Pengkompilasi MSVC
Sintaks Baris Perintah Pengkompilasi MSVC
/Zc (Kesuaian)