Adakah Sintaks padam ptr Setara dengan memadam[] ptr?
Perbezaan antara padam dan padam[] mungkin kelihatan halus, tetapi ia adalah penting untuk pengurusan memori dalam C .
Pertimbangkan kod berikut coretan:
IP_ADAPTER_INFO *ptr = new IP_ADAPTER_INFO[100];
Kod ini memperuntukkan tatasusunan 100 struktur IP_ADAPTER_INFO menggunakan baharu. Untuk mengagihkan semula memori ini, kita perlu menggunakan sintaks pemadaman yang sesuai.
Menggunakan delete ptr:
delete ptr;
Sintaxis ini tidak betul. ptr menunjuk pada tatasusunan objek, jadi ia mesti dipadamkan menggunakan delete[]. Kegagalan berbuat demikian membawa kepada gelagat yang tidak ditentukan, yang boleh mengakibatkan kebocoran ingatan atau akibat lain yang tidak dapat diramalkan.
Menggunakan padam[] ptr:
delete[] ptr;
Sintaks ini ialah betul. delete[] digunakan untuk mengagihkan tatasusunan. Ia akan menggunakan pemusnah yang sesuai untuk setiap elemen dalam tatasusunan dan membebaskan memori yang diperuntukkan untuk keseluruhan tatasusunan.
Analisis Kod Penyingkiran:
Kod pembongkaran yang disediakan menunjukkan perbezaan antara delete ptr dan delete[] ptr.
Untuk delete ptr, satu panggilan kepada operator padam dibuat, menunjukkan bahawa ia cuba memadamkan satu objek.
Untuk memadam[] ptr, panggilan kepada pengendali padam[] dibuat, menunjukkan bahawa ia cuba memadamkan tatasusunan objek.
Kesimpulan:
Untuk mengelakkan kebocoran memori dan tingkah laku yang tidak ditentukan, adalah penting untuk menggunakan yang betul sintaks pemadaman untuk tatasusunan. padam ptr hendaklah digunakan untuk memadamkan objek tunggal, manakala padam[] ptr hendaklah digunakan untuk memadam tatasusunan.
Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan `delete ptr` vs. `delete[] ptr` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!