Delete hai con trỏ cùng trỏ đến một vùng nhớ

Em có một thắc mắc về câu lệnh delete như sau:

    int *a = new int(1);
	int *b = a;
	delete b;

Như em đã tìm hiểu thì delete sẽ thu hồi lại vùng nhớ của biến a (để vùng nhớ đó có thể phục vụ cho các chương trình khác) do đó sau khi delete thì địa chỉ biến a không thay đổi. Tuy nhiên ở đây em không hiểu là a và b cùng trỏ đến 1 vùng nhớ, mà sau khi delete, địa chỉ a không đổi nhưng địa chỉ của b lại thay đổi ạ?

Nếu sau đó b là NULL thì ngon :smiley:delete NULL; là không làm gì cả.

Địa chỉ a và b ko thay đổi sau khi chỉ dùng delete b.
Viết cout << a ; cout << b sau khi delete b sẽ thấy 2 địa chỉ như nhau.
Phải reset b = nullptra = nullptr sau khi delete.
Đây là lý do nên dùng smart pointer trong c++

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?