我使用以下代碼從C#調用winapi函數。從C#調用Windows API函數時需要明確釋放哪些對象?
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr PathFindFileName(string p);
IntPtr pStr = PathFindFileName("Test");
string str = Marshal.PtrToStringAuto(pStr)
我想知道如何區分一旦完成需要釋放的對象和不需要的對象。
例如:在上面的代碼中,我是否需要釋放pStr?
還是垃圾收集器自動執行它?
萬一我需要釋放,它是如何完成的?
謝謝, 邁克爾。
這段代碼很糟糕:'pStr'是一個懸掛指針。 – 2015-02-05 15:20:49
@CoryNelson這就是這個人所問的。 – andlabs 2015-02-05 16:42:06
@MichaelEngstler - 對於將來的筆記,您使用的問題標題不太好;更好的一個是「我需要從C#調用Windows API函數時明確釋放哪些對象?」或沿着這條線的東西; [閱讀本文](http://stackoverflow.com/help/how-to-ask),在「編寫一個總結特定問題的標題」下。 (這個問題本身*很好,至少它似乎只是讓我醒來) – andlabs 2015-02-05 16:45:29