在c#中从内存中释放指针

时间:2011-06-06 12:37:40

标签: c#

我正在使用fixed{}短语处理C#中的指针。

我将我的代码放在fixed语句的括号内,并想知道Garbage集合是否会在修复语句之后处理指针释放

fixed{int * p=&x}
{
// i work with x.
}

如果没有,我该如何释放它?

2 个答案:

答案 0 :(得分:5)

您的指针指向托管对象(x),因此无需担心:指针不需要被释放(或者更确切地说,它在{{1}的末尾超出范围})和指针fixed本身由GC管理。

答案 1 :(得分:0)

C中的一些类似代码会更明确:

{
   int x;     // allocates space for x

   {
     int *p=&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#代码基本相同。