Salin penunjuk dalam vektor ketika saya menghapus penunjuk

pemrograman


m_vBol.push_back(pbol);

delete pbol;

dengan kode ini vektor saya memiliki penunjuk nol, saya pikir itu sebabnya saya menghapus pbol, tetapi saya harus menghapusnya, bagaimana caranya?

Apa yang saya coba:

Saya mencoba mencari di internet karena saya tidak menyelesaikannya

Solusi 1

Sekadar menambah apa yang dimiliki 0x01AA – memang benar – katanya …
Menyalin pointer melakukan hal itu – ia membuat salinan alamat suatu item, bukan salinan item tersebut.
Dan ketika Anda menelepon delete pada penunjuk ke item memori, memori yang digunakan dikembalikan ke kumpulan heap untuk digunakan kembali – yang berarti bahwa setiap salinan alamat sekarang dapat menunjuk ke struktur yang sama sekali berbeda.

Misalnya, jika Anda melakukan malloc pada array yang terdiri dari 5 bilangan bulat, menyalin pointer, menghapusnya, dan kemudian malloc pada array yang terdiri dari 100 float, salinan pointer dapat mengakses array float dan mengacak data kode lain.

Jika Anda perlu menghapus sebuah pointer, Anda bertanggung jawab untuk memastikan bahwa pointer tersebut tidak lagi digunakan, bahwa tidak ada salinan pointer yang dapat diakses selanjutnya – jika tidak, kesalahan yang sangat tidak terduga dapat mulai muncul di kode yang tidak terkait!

コメント

タイトルとURLをコピーしました