ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » управление памятью » Точное отслеживание указателей


Точное отслеживание указателей

Сообщений 1 страница 2 из 2

1

https://stackoverflow.com/questions/171 … 9#17131389

What is not so simple is finding that pointer back. The CLR is heavily invested in ensuring that can be done reliably and efficiently. Such pointers can be stored in many different places. The easier ones to find back are object references stored in a field of an object, a static variable or a GCHandle. The hard ones are pointers stored on the processor stack or a CPU register. Happens for method arguments and local variables for example.

https://stackoverflow.com/questions/276 … ta-in-heap

The CLR also permits allocating handles to objects, extra references. Exposed as the GCHandle type in .NET, but only necessary if the GC needs help determining if an object should stay alive or should not be moved. Only relevant if you interop with unmanaged code.

Отредактировано Лис (2017-07-15 16:02:37)

0

2

Не так просто найти этот указатель. CLR активно вливается в обеспечение надежной и эффективной работы. Такие указатели могут храниться в разных местах. Более легкими для поиска являются ссылки на объекты, хранящиеся в поле объекта, статической переменной или GCHandle. Трудные - это указатели, хранящиеся в стеке процессора или в регистре CPU. Например, для аргументов метода и локальных переменных.

CLR также позволяет выделять дескрипторы объектов, дополнительные ссылки. Выставляется как тип GCHandle в .NET, но только в том случае, если GC нуждается в определении, должен ли объект оставаться в живых или его не следует перемещать. Только релевантно, если вы взаимодействуете с неуправляемым кодом.

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » управление памятью » Точное отслеживание указателей