# MemoryVirtualBinding

`import { MemoryVirtualBinding } from "destack:memory/binding";`

Virtual binding family.

```ds title="MemoryVirtualBinding"
export interface MemoryVirtualBinding {
    reserveVirtualMemory(length: uint64, flags: VirtualMemoryReserveFlags, addressHint?: uint64 | undefined): Result<VirtualMemoryRange, HostError>;
    commitVirtualMemory(range: VirtualMemoryRange, protection: MemoryProtection): Result<void, HostError>;
    decommitVirtualMemory(range: VirtualMemoryRange): Result<void, HostError>;
    releaseVirtualMemory(range: VirtualMemoryRange): Result<void, HostError>;
    protectVirtualMemory(range: VirtualMemoryRange, protection: MemoryProtection): Result<void, HostError>;
    flushInstructionCache(range: VirtualMemoryRange): Result<void, HostError>;
}
```

[language/library/src/memory/binding/virtual.ds:42:106](https://github.com/destack-sh/destack/blob/main/language/library/src/memory/binding/virtual.ds#L42-L106)

## Members

### `reserveVirtualMemory(length: uint64, flags: VirtualMemoryReserveFlags, addressHint?: uint64 | undefined): Result<VirtualMemoryRange, HostError>`

Reserve one virtual memory range.

### `commitVirtualMemory(range: VirtualMemoryRange, protection: MemoryProtection): Result<void, HostError>`

Commit physical backing for one reserved virtual memory range.

### `decommitVirtualMemory(range: VirtualMemoryRange): Result<void, HostError>`

Decommit physical backing from one virtual memory range.

### `releaseVirtualMemory(range: VirtualMemoryRange): Result<void, HostError>`

Release one reserved virtual memory range.

### `protectVirtualMemory(range: VirtualMemoryRange, protection: MemoryProtection): Result<void, HostError>`

Change virtual memory protection for one range.

### `flushInstructionCache(range: VirtualMemoryRange): Result<void, HostError>`

Flush instruction cache for one executable memory range.
