30/09/2018, 16:58
Code thế này có gọi là bị leak memory không?
int *p;
int *q;
int *d;
p = new int(10);
q = p;
d = q;
delete p;
Trên là ngôn ngữ C++, code như trên có bị leak mem không?
Anh em thảo luận nhé.
Bài liên quan
theo mình là có chắc chúng trỏ về 1 thằng thôi, delete 1 phát là mấy thằng kia lang thang rồi.
Trong trường hợp này memory không bị leak.
Bởi vì 3 con trỏ p, q, d đều trỏ tới cùng vùng nhớ nên delete con trỏ nào cũng sẽ giải phóng vùng nhớ đã cấp phát.
Nhưng để an toàn thì sau khi giải phóng vùng nhớ, nên gán d = p = q = NULL;
để tránh trường hợp vô tình dùng con trỏ để truy xuất vào vùng nhớ đã được giải phóng.