0Pricing
C++ Academy · Pelajaran

Mengapa Pointer Cerdas Menggantikan new dan delete Mentah

Pahami RAII dan mengapa memiliki pointer mentah jarang tepat dalam C++ modern

Mengapa Pointer Cerdas Menggantikan new dan delete Mentah adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

new dan delete Mentah

Warisan dari C: new T mengalokasikan T di memori dinamis; delete membebaskannya. Anda harus memasangkan setiap new dengan tepat satu delete—jika tidak, terjadi kebocoran atau program dapat berhenti.

Widget* w = new Widget();
// ... use w ...
delete w;        // forget this and you leak

Apa yang Bisa Salah

Kegagalan yang umum:

  • delete yang terlupakan—kebocoran memori
  • delete ganda—perilaku tidak terdefinisi
  • Pengecualian yang dilempar antara new dan delete—kebocoran
  • Mengembalikan penunjuk mentah dengan kepemilikan yang tidak jelas

RAII sebagai Solusi

Perolehan Sumber Daya adalah Inisialisasi: kaitkan masa hidup sumber daya dengan masa hidup objek pada tumpukan. Destruktor melepaskan sumber daya—bahkan jika pengecualian dilempar.

Gagasan Penunjuk Cerdas

Penunjuk cerdas adalah pembungkus RAII kecil di sekitar penunjuk mentah. Destruktornya memanggil delete. Anda tidak akan lupa membebaskannya.

Tiga Penunjuk Cerdas

Penunjuk cerdas dari pustaka standar dalam <memory>:

  • std::unique_ptr<T> — kepemilikan eksklusif
  • std::shared_ptr<T> — kepemilikan bersama dengan penghitungan referensi
  • std::weak_ptr<T> — pengamat tanpa kepemilikan terhadap shared_ptr

Penunjuk Cerdas Itu Ringan

unique_ptr tidak memiliki overhead (ukuran dan kecepatannya sama seperti penunjuk mentah). shared_ptr memiliki biaya kecil untuk penghitungan referensi atomik.

Tidak Ada Lagi delete Manual

Dengan penunjuk cerdas, Anda hampir tidak pernah menulis delete. Destruktor akan menanganinya.

#include <memory>
std::unique_ptr<Widget> w = std::make_unique<Widget>();
// no delete needed — when w goes out of scope, Widget is destroyed

Penunjuk Cerdas dan Pengecualian

Jika pengecualian dilempar di tengah fungsi, variabel lokal dihancurkan dalam urutan terbalik. Penunjuk cerdas melepaskan sumber dayanya secara otomatis—penunjuk mentah mengalami kebocoran.

Kepemilikan dalam Tipe

Sekarang tipe penunjuk cerdas menyandikan kepemilikan. Dengan membaca deklarasi fungsi, Anda dapat mengetahui siapa yang memiliki objek tersebut.

// I take ownership
void consume(std::unique_ptr<Widget> w);

// I look but do not own
void inspect(const Widget& w);

Penunjuk Mentah Masih Ada

Gunakan penunjuk mentah (atau referensi) untuk akses tanpa kepemilikan. Penunjuk tersebut menyampaikan pesan "Saya meminjam, bukan memiliki."

Mengganti new dengan Fungsi make

Lebih baik gunakan std::make_unique (C++14) dan std::make_shared (C++11). Keduanya aman terhadap pengecualian dan sedikit lebih efisien daripada memanggil new secara langsung.

auto w = std::make_unique<Widget>(42);
auto s = std::make_shared<Resource>("file.txt");

Pemeriksaan Singkat

Apa alasan utama menggunakan std::unique_ptr daripada pasangan new/delete mentah?

Ringkasan

new/delete mentah rentan terhadap kesalahan. Penunjuk cerdas membungkus objek yang dialokasikan di memori dinamis dalam pengelola RAII yang melepaskan sumber daya secara otomatis. Lebih baik gunakan std::make_unique dan std::make_shared demi keamanan dan performa.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengapa Pointer Cerdas Menggantikan new dan delete Mentah” gratis?

Ya — teks lengkap “Mengapa Pointer Cerdas Menggantikan new dan delete Mentah” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengapa Pointer Cerdas Menggantikan new dan delete Mentah”?

Pahami RAII dan mengapa memiliki pointer mentah jarang tepat dalam C++ modern Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mengapa Pointer Cerdas Menggantikan new dan delete Mentah” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Pointer Cerdas Menggantikan new dan delete Mentah
  2. unique_ptr: Kepemilikan Eksklusif
  3. shared_ptr dan weak_ptr: Kepemilikan Bersama
  4. Penghapus Kustom dan Fungsi Make
← Kembali ke C++ Academy