看到一段代码,不确定是否需要释放内存。如果我在下面有这个块:
IntPtr buf = new IntPtr(logRecord.ToInt32() + logTotalCount *
Marshal.SizeOf(typeof(SomeUnmanagedStruct)));
我需要打电话Marshal.FreeHGlobal(buf)
吗?
根据我有限的理解(以及从这个SO),我认为我们不应该打电话FreeHGlobal
,因为我们没有打电话Marshal.AllocHGlobal
。但是,我也读过这个可能需要调用的SO ?LocalFree
任何建议释放此内存的正确方法是什么(如果我需要做任何事情)?
更新:以防万一有人对 IDISPOSABLE 包装类感兴趣,这里有一篇很棒的文章。