_MEM (function) - QB64 Wiki

_MEM (function)

From QB64 Wiki

Jump to: navigation, search

The _MEM function returns a _MEM block referring to the largest possible continuous memory region beginning at variable's offset.


memory_block = _MEM(reference_ variable)

Unsecure Syntax:

memory_block = _MEM(offset, byte_size)


  • The memory block created will hold the reference variable' or array value(s), type and byte size in a separate memory area.
  • The secure syntax reference variable is an existing variable's referenced memory block.
  • The unsecure syntax's designated offset and byte size cannot be guaranteed! AVOID if possible!


  • The memory block _MEM type variable holds the read only OFFSET, SIZE, TYPE and ELEMENTSIZE.
  • All values created by memory functions MUST be freed using _MEMFREE with a valid _MEM variable type.
  • _MEM function cannot reference variable length STRING variable values! String values must be designated as a fixed LEN.

Example: Assigning values to reference variables in memory.

DIM SHARED m(3) AS _MEM DIM SHARED Saved(3) m(1) = _MEM(x) m(2) = _MEM(y) m(3) = _MEM(z) x = 3: y = 5: z = 8 PRINT x, y, z Save x, y, z x = 30: y = 50: z = 80 PRINT x, y, z RestoreIt PRINT x, y, z _MEMFREE m(1) _MEMFREE m(2) _MEMFREE m(3) END SUB Save (n1, n2, n3) Saved(1) = n1 Saved(2) = n2 Saved(3) = n3 END SUB SUB RestoreIt _MEMPUT m(1), m(1).OFFSET, Saved(1) _MEMPUT m(2), m(2).OFFSET, Saved(2) _MEMPUT m(3), m(3).OFFSET, Saved(3) END SUB

Code by SMcNeill

See also:

Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Personal tools