Rumah > Artikel > pembangunan bahagian belakang > Bilakah memori yang diperuntukkan dibebaskan dalam C++?
Dalam C++, anda perlu mengosongkan memori yang diperuntukkan untuk mengelakkan kebocoran memori. Peluang utama untuk melepaskan memori termasuk: apabila skop tamat (pelepasan automatik). Gunakan penunjuk pintar (auto-lepas). Percuma secara jelas (menggunakan padam atau padam[]).
Bilakah memori yang diperuntukkan dikeluarkan dalam C++?
Dalam C++ anda bertanggungjawab untuk membebaskan memori yang diperuntukkan. Kegagalan untuk mengosongkan memori boleh menyebabkan kebocoran memori, yang boleh merendahkan prestasi aplikasi dan akhirnya mengakibatkan ranap sistem. Berikut ialah beberapa peraturan utama untuk menentukan masa untuk melepaskan memori:
1 Apabila skop tamat:
{ int* ptr = new int; // ... } // ptr wird hier automatisch freigegeben
2. Gunakan penunjuk pintar:
std::unique_ptr
dan std::shared_ptr
) secara automatik Lepaskan memori apabila ia keluar dari skop atau apabila penunjuk tidak lagi diperlukan. std::unique_ptr
和 std::shared_ptr
)自动在对象超出作用域或指针不再需要时释放内存。std::unique_ptr<int> ptr = std::make_unique<int>(); // ...
3. 显式释放:
delete
或 delete[]
运算符显式释放内存。int* ptr = new int; // ... delete ptr;
实战案例:
考虑以下分配动态数组的示例:
int* ptr = new int[10];
在这个例子中,ptr
delete[] ptr; // 显式释放数组🎜🎜3. Keluaran eksplisit: 🎜🎜🎜🎜Jika anda tidak boleh menggunakan skop atau penunjuk pintar, anda boleh menggunakan
delete
atau delete[]
operator secara eksplisit membebaskan memori. 🎜🎜Contoh: 🎜🎜std::unique_ptr<int[]> ptr(new int[10]); // 使用智能指针自动释放数组🎜🎜Contoh praktikal: 🎜🎜🎜Pertimbangkan contoh berikut untuk memperuntukkan tatasusunan dinamik: 🎜rrreee🎜Dalam contoh ini,
ptr
menunjukkan kepada tatasusunan yang diperuntukkan. Selepas anda selesai menggunakan tatasusunan, anda mesti membebaskannya. Anda boleh melakukannya dengan cara ini: 🎜rrreee🎜 atau gunakan penunjuk pintar: 🎜rrreeeAtas ialah kandungan terperinci Bilakah memori yang diperuntukkan dibebaskan dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!