protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                // Release managed resources.
                if (marshaller != null)
                {
                    marshaller.FreeMemory();
                    marshaller.Dispose();
                    marshaller = null;
                }
            }

            base.Dispose(disposing);
        }
 internal MemoryRegion(Marshaler marshaler, IntPtr ptr, int size)
 {
     this.marshaler = marshaler;
     this.region = ptr;
     this.regionSize = size;
 }
 /// <summary>
 /// Create in instance of TypeMarshalSafeIntPtr.
 /// </summary>
 /// <param name="marshaller">The marshaller.</param>
 /// <param name="ptr">The pointer of unmanaged memory.</param>
 internal TypeMarshalSafeIntPtr(Marshaler marshaller, IntPtr ptr)
     : base(ptr)
 {
     this.marshaller = marshaller;
 }