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代码的作用基本相同。引用或值在堆栈上分配。