Tag: unmanagedresources

Marshal.FreeHGlobal应该放在finally块中以确保资源处置?

我有以下代码块: IntPtr unmanagedPointer = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, unmanagedPointer, buffer.Length); SomeCommandThatCanThrowAnException(); Marshal.FreeHGlobal(unmanagedPointer); 是否应该在try中包装块,并将FreeHGlobal命令放在finally块中。 (如果middle命令抛出exception)。 在这种情况下最终会阻止内存泄漏似乎是有道理的,但是从我在网上找到的例子中,最终没有使用。 也许资源会被自动处理掉(即使它们是不受管理的)。