private void Dispose(bool disposing) { if (disposing) { Glk.glk_exit(); } if (argvStrings != null) { foreach (IntPtr str in argvStrings) { Marshal.FreeHGlobal(str); } argvStrings = null; } if (argv != IntPtr.Zero) { Marshal.FreeHGlobal(argv); argv = IntPtr.Zero; } GC.SuppressFinalize(this); }