Bagaimanakah Peruntukan Memori dalam C Berbeza dalam VC6 Berbanding dengan Penyusun Baru?

Mary-Kate Olsen
Lepaskan: 2024-11-17 11:03:01
asal
886 orang telah melayarinya

How Does Memory Allocation in C   Differ in VC6 Compared to Newer Compilers?

Peruntukan Baharu dalam C

Dalam C , apabila pengendali baharu gagal memperuntukkan memori, ia menimbulkan pengecualian std::bad_alloc. Walau bagaimanapun, penyusun tertentu, seperti VC6, dilaporkan menyimpang daripada piawaian ini.

Gelagat VC6

VC6 tidak mematuhi piawaian C dan sebaliknya mengembalikan 0 (atau NULL ) apabila peruntukan memori gagal. Ketidakakuran ini boleh membawa kepada kod yang kelihatan tidak kemas kerana keperluan berterusan untuk menyemak NULL selepas setiap pernyataan baharu.

Resolusi

Microsoft mengakui isu ini dalam Pengetahuan Perkara Asas KB276944. Untuk mengatasinya dalam VC6, MSVC membenarkan pemautan dengan pengendali baharu tersuai. Dalam pengkompil MSVC yang lebih baharu (7.0 dan ke atas), memaut dengan fail objek nothrownew.obj menyediakan gelagat yang sama seperti VC6.

VS2005 dan Beyond

MSVC 8.0 (VS2005 ) memperkenalkan perubahan di mana new kini secara konsisten menaikkan std::bad_alloc secara lalai. Pilihan untuk mengembalikan 0 masih boleh ditentukan menggunakan parameter std::nothrow, seperti yang ditunjukkan dalam contoh kod yang disediakan. Ini ialah penyelesaian serasi ke belakang yang membenarkan kod berfungsi dengan mana-mana versi pengkompil.

Atas ialah kandungan terperinci Bagaimanakah Peruntukan Memori dalam C Berbeza dalam VC6 Berbanding dengan Penyusun Baru?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan