Pointer dapat lebih cepat dan dapat menyebabkan lebih sedikit overhead, baik dalam struktur data maupun dalam menjaga tapak pelaksanaan program. (Harap perhatikan kata 'bisa'.)
Secara umum aturannya adalah, jika Anda mengalokasikan sumber daya, baik dengan melakukan alokasi Anda sendiri atau melakukan sesuatu atas nama Anda, maka tugas Anda untuk melepaskannya ketika dilakukan.
Beban melakukan hal di atas adalah mengembalikan tanggung jawab kepada pengembang, daripada meminta runtime melakukannya. Ini memiliki beberapa keuntungan lebih dalam hal hal-hal dapat hidup lebih lama, atau melintasi batas, atau dibuang pada waktu yang lebih tepat, atau tidak perlu membawa beban pengumpul sampah di sekitar.
Dalam kasus eksotis, biasanya melibatkan pengecualian dan ruang lingkup, ada beberapa kasus tepi yang mengharuskan seseorang untuk sedikit lebih berhati-hati jika kode pembersihan tidak dihindari. Secara realistis, kasing ini dapat dirancang. Kami hidup tanpa kode yang dikelola selama beberapa dekade.
Seringkali yang membuat pointer "sulit" hanyalah tidak memahami apa yang terjadi pada tingkat perangkat keras. Ini tidak lebih dari tipuan.
Pointer memberi Anda lebih banyak akses mentah, dan ini bisa sangat membantu, pintar, atau perlu. Anda dapat menunjuk ke mana saja dan memperlakukannya seperti apa saja. Jika Anda menggunakan kekuatan seperti Tuhan untuk kebaikan, itu sangat, sangat bagus.
Sisi con biasanya membuang-buang dengan lupa untuk melepaskan sesuatu, atau dengan melepaskannya lebih dari sekali, atau merujuk sesuatu setelah itu dirilis, atau memperbaiki sesuatu ketika Anda tidak menunjuk ke mana pun. Hal-hal ini sering mengakibatkan crash spektakuler, dan jujur biasanya menunjukkan bahwa Anda punya masalah logika, daripada pointer yang rapuh.
Jika Anda seorang pengembang yang solid, menggunakan pointer seharusnya tidak menjadi lebih bermasalah daripada struktur data lainnya. Sekali lagi, ini bukan ilmu roket, dan orang-orang melakukannya selama beberapa dekade tanpa berkedip. Ini hanya diajarkan kurang teliti akhir-akhir ini.
Semua yang dikatakan, kecuali Anda membutuhkan pointer, kasus-kasus kenyamanan dan exoitic yang disediakan oleh pengumpulan sampah yang baik membuat bekerja di lingkungan yang dikelola jauh lebih baik. Sangat bagus untuk dapat mengambil beberapa memori, menggunakannya, dan meninggalkannya, mengetahui bahwa beberapa waktu kemudian, mungkin akan dibuang, jika masuk akal untuk melakukannya. Itu kode yang sedikit lebih sedikit pada bagian coder, dengan imbalan runtime yang melakukan beberapa pengangkatan tambahan.