Освобождение указателя из памяти в c#

#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 # делает по существу то же самое.