#c#
#c#
Вопрос:
Я имею дело с указателем в C #, используя fixed{}
фразы.
Я поместил свой код в скобки фиксированного оператора и хочу знать, будет ли сборка мусора обрабатывать освобождение указателя после фиксированного оператора
fixed{int * p=amp;x}
{
// i work with x.
}
если нет, то как я могу его освободить?
Комментарии:
1. Ссылка или значение выделяется в стеке.
Ответ №1:
Ваш указатель указывает на управляемый объект ( x
), поэтому беспокоиться не о чем: указатель не нужно освобождать (или, скорее, он выходит за пределы области видимости в конце fixed
блока), а сам указатель x
управляется GC.
Ответ №2:
Какой-нибудь аналогичный код на C сделает ситуацию более понятной:
{
int x; // allocates space for x
{
int *p=amp;x; // does not allocate for something p points to (only for p)
// ...
} // leaves inner scope, p vanishes, *p is not deallocated
// ...
} // leaves outer scope, x is deallocated
Код C # делает по существу то же самое.