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

本文关键字:释放 指针 内存 | 更新日期: 2023-09-27 17:58:25

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

我把代码放在固定语句的方括号里,想知道垃圾回收是否会处理固定语句之后的指针释放

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

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

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

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

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#代码的作用基本相同。