30/09/2018, 20:01

Tại sao chương trình lại treo nếu xóa con trỏ 2 Lần?

Cho mình hỏi nếu xóa con trỏ 2 lần thì lỗi đó là lỗi gì. Và tại sao chương trình lại treo

KYN viết 22:02 ngày 30/09/2018

xóa cọn trỏ null chả bị lỗi gì nhé
http://www.cplusplus.com/reference/new/operator%20delete[]/
If this is a null-pointer, the function does nothing.

… nhưng nếu xóa con trỏ 2 lần thì sẽ khác đấy

David Teo viết 22:09 ngày 30/09/2018

À, mình nhầm. Ý mình là xóa con trỏ 2 lần á.
Tại sao lại xảy ra lỗi lúc thực thi.

David Teo viết 22:07 ngày 30/09/2018

Mình đã edit lại.???

KYN viết 22:05 ngày 30/09/2018

http://diendan.congdongcviet.com/threads/t36221::ban-chat-cua-viec-cap-phat-bo-nho-dong-giai-phong-bo-nho.cpp

đọc thêm để hiểu. thực tế thì : Deleting the same memory twice is undefined behaviour
hành vi xóa 1 con trỏ > 1 lần là hành vi ko đc định nghĩa, nó có thể khiến bất cứ điều gì cũng có thể xảy ra, tiêu biểu là crash . Vì thế mỗi khi delete con trỏ thì đều nên gán cho nó = NULL trước khi tái sử dụng. Tập thành thói quen r sẽ ít bị memory leak or crash

 int a = new int;
 delete a;
 a = null;
Bài liên quan
0