我使用以下代码从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