В чем разница между мусором и висячими ссылками? - PullRequest
6 голосов
/ 05 мая 2011

В чем разница между мусором и свисающими ссылками?

Ответы [ 3 ]

19 голосов
/ 05 мая 2011

Висячая ссылка - это ссылка на объект, которого больше не существует. Мусор - это объект, к которому нельзя обратиться по ссылке.

Висячие ссылки не существуют в языках сбора мусора, поскольку объекты возвращаются только тогда, когда они больше недоступны (собирается только мусор). В некоторых языках или в рамках можно использовать «слабые ссылки», которые можно оставить висящими, поскольку они не учитываются во время проходов сбора.

На языках с ручным управлением памятью, таких как C или C ++, вы можете встретить висячие указатели , выполнив это, например:

int * p = new int;
delete p;

int i = *p; // error, p has been deleted!
3 голосов
/ 05 мая 2011

Висячая ссылка - это ссылка на объект, который больше не существует.

То, что считается мусором, зависит от реализации вашего сборщика мусора.

С трассировкой и подсчетом ссылокGC, висячие ссылки не могут существовать (если нет ошибки реализации GC), потому что только те элементы считаются подходящими для сборки мусора, на которую нет ссылок.

Таким образом, висячие ссылки являются проблемой в значительной степени только для систем с ручнымуправление памятью.

0 голосов
/ 07 декабря 2015

Dangling Reference: ссылка на адрес памяти, который был первоначально выделен, но теперь освобожден

int x= 1000;   //creates a new 
memory block
int* p = x;   // *p is the pointer to address block 1000(mem location) 
int *p = 20;
printf("%d",*p); //This pointer prints 20 
delete p; 
printf("%d",*p); // This would throw an error, because now p is 
                 // inaccessible or dangling. *p is a dangling pointer.

Мусор: память, которая была выделена в куче и не была явно освобождена, но не доступна для программы. У Java есть сборщик мусора. Своевременно удаляет висячие указатели и другую мусорную память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...