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

xóa cọn trỏ null chả bị lỗi gì nhé :stuck_out_tongue:
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 :blush:

2 Likes

À, 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.

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

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 :grin:

 int a = new int;
 delete a;
 a = null;
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?