//Creates collection with specified name public CollectionHandle(Database database, string name, CollectionOptions options) : base(false) { _database = database; var libraryHandle = DatabaseHandle.LibraryHandle; var createCollection = libraryHandle.GetUnmanagedDelegate<CreateCollectionDelegate>(); IntPtr unmanagedName = Native.NativeUtf8FromString(name);//UnixMarshal.StringToHeap(name, Encoding.UTF8); try { handle = createCollection(DatabaseHandle, unmanagedName, ref options); if (IsInvalid) { throw EjdbException.FromDatabase(database, "Unknown error on collection creation"); } } finally { Marshal.FreeHGlobal(unmanagedName); //UnixMarshal.FreeHeap(cptr); } }