6
我正在處理C#中的指針,使用fixed{}
短語。從c中的內存中釋放指針#
我把我的代碼的固定語句的括號內,並想知道如果沒有我怎樣才能釋放它的垃圾收集將固定語句
fixed{int * p=&x}
{
// i work with x.
}
後,辦理指針釋放?
我正在處理C#中的指針,使用fixed{}
短語。從c中的內存中釋放指針#
我把我的代碼的固定語句的括號內,並想知道如果沒有我怎樣才能釋放它的垃圾收集將固定語句
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#代碼基本上是不一樣的。
+1:好問題! – Nick 2011-06-06 12:48:40
引用或值分配在堆棧上。 – leppie 2011-06-06 12:53:04