2011-06-06 68 views
6

我正在處理C#中的指針,使用fixed{}短語。從c中的內存中釋放指針#

我把我的代碼的固定語句的括號內,並想知道如果沒有我怎樣才能釋放它的垃圾收集將固定語句

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

後,辦理指針釋放?

+0

+1:好問題! – Nick 2011-06-06 12:48:40

+0

引用或值分配在堆棧上。 – leppie 2011-06-06 12:53:04

回答

5

你的指針指向一個託管對象(x),所以沒有什麼可擔心的:指針不需要被釋放(或者說,它在fixed塊的末尾超出範圍),並且指針x本身由GC管理。

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#代碼基本上是不一樣的。