Tôi đã nhận được một số mã sử dụng nhiều con trỏ trỏ đến cùng một địa chỉ. Ví dụ đơn giản tương đương:Cách xóa an toàn nhiều con trỏ
int *p = new int(1);
int *q = p;
int *r = q;
delete r; r = NULL; // ok
// delete q; q = NULL; // NOT ok
// delete p; p = NULL; // NOT ok
Làm thế nào để xóa an toàn mà không bị xóa nhiều? Điều này đặc biệt khó khăn nếu tôi có nhiều đối tượng có con trỏ trỏ đến cùng một địa chỉ.
Điều này có nên hoạt động không? xóa null được quy định trong tiêu chuẩn, vì vậy nó cho phép và nên làm việc. OK, đó không phải là kiểu mã hóa tốt nhất ... –
@Mario: Xóa NULL được chỉ định là một NO-OP nhưng gọi nó là phải chịu một số chi phí. –
Vấn đề là q và p sẽ không là NULL, do đó sẽ có hai lần xóa. –