Sebaliknya, Anda harus selalu lebih memilih alokasi tumpukan, sejauh sebagai aturan praktis, Anda tidak boleh memiliki new / delete dalam kode pengguna Anda.
Seperti yang Anda katakan, saat variabel dideklarasikan di stack, destruktornya secara otomatis dipanggil saat berada di luar cakupan, yang merupakan alat utama Anda untuk melacak masa pakai resource dan menghindari kebocoran.
Jadi secara umum, setiap kali Anda perlu mengalokasikan sumber daya, apakah itu memori (dengan memanggil baru), pegangan file, soket atau apa pun, bungkus dalam kelas di mana konstruktor memperoleh sumber daya, dan destruktor melepaskannya. Kemudian Anda dapat membuat objek jenis itu di tumpukan, dan Anda dijamin bahwa sumber daya Anda dibebaskan saat berada di luar ruang lingkup. Dengan cara itu Anda tidak perlu melacak pasangan baru / hapus Anda di mana-mana untuk memastikan Anda menghindari kebocoran memori.
Nama paling umum untuk idiom ini adalah RAII
Lihat juga kelas penunjuk cerdas yang digunakan untuk membungkus hasil penunjuk pada kasus yang jarang terjadi saat Anda harus mengalokasikan sesuatu dengan yang baru di luar objek RAII khusus. Sebagai gantinya, Anda meneruskan penunjuk ke penunjuk cerdas, yang kemudian melacak masa pakainya, misalnya dengan penghitungan referensi, dan memanggil destruktor saat referensi terakhir keluar dari ruang lingkup. Pustaka standar memiliki std::unique_ptr
manajemen berbasis ruang lingkup sederhana, dan std::shared_ptr
yang menghitung referensi untuk mengimplementasikan kepemilikan bersama.
Banyak tutorial yang mendemonstrasikan pembuatan instance objek menggunakan cuplikan seperti ...
Jadi apa yang Anda temukan adalah bahwa kebanyakan tutorial payah. ;) Sebagian besar tutorial mengajari Anda praktik C ++ yang buruk, termasuk memanggil baru / hapus untuk membuat variabel bila tidak diperlukan, dan memberi Anda kesulitan melacak seumur hidup alokasi Anda.