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

C# 在c中从内存中释放指针#,c#,C#,我用fixed{}短语处理C#中的指针 我将代码放在fixed语句的括号内,想知道垃圾收集是否会处理fixed语句之后的指针释放 fixed{int * p=&x} { // i work with x. } 如果没有,我如何释放它?您的指针指向一个托管对象(x),因此无需担心:指针不需要释放(或者更确切地说,它在fixed块的末尾超出范围)指针对象x本身由GC管理。C中的一些类似代码会让事情变得更清楚: { int x; // allocates space for x

我用
fixed{}
短语处理C#中的指针

我将代码放在fixed语句的括号内,想知道垃圾收集是否会处理fixed语句之后的指针释放

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

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

您的指针指向一个托管对象(
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代码的作用基本相同。

引用或值在堆栈上分配。