Files
netch/Netch/3rd/DnsClient.NET/Interop/DisposableIntPtr.cs
Connection Refused b2ea730984 done
2019-12-02 19:51:12 +08:00

38 lines
763 B
C#

using System;
using System.Runtime.InteropServices;
namespace DnsClient
{
internal class DisposableIntPtr : IDisposable
{
public IntPtr Ptr => _ptr;
public bool IsValid { get; private set; } = true;
private IntPtr _ptr;
private DisposableIntPtr()
{
}
public static DisposableIntPtr Alloc(int size)
{
var ptr = new DisposableIntPtr();
try
{
ptr._ptr = Marshal.AllocHGlobal(size);
}
catch (OutOfMemoryException)
{
ptr.IsValid = false;
}
return ptr;
}
public void Dispose()
{
Marshal.FreeHGlobal(_ptr);
}
}
}