我正在使用fixed{}
短语处理C#中的指针。
我将我的代码放在fixed语句的括号内,并想知道Garbage集合是否会在修复语句之后处理指针释放
fixed{int * p=&x}
{
// i work with x.
}
如果没有,我该如何释放它?
答案 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#代码基本相同。