_MEMNEW - QB64 Wiki

_MEMNEW

From QB64 Wiki

Jump to: navigation, search

The _MEMNEW function allocates new memory and returns a _MEM memory block referring to it.


Syntax:

memory_block = _MEMNEW(byte_size)


Parameters:

  • The byte size parameter is the desired byte size of the memory block based on the variable type it will hold.


Usage:

  • The memory block value created holds the starting OFFSET, SIZE, TYPE and ELEMENTSIZE.
  • _MEMNEW does not clear the data previously in the memory block it allocates for speed purposes.
  • To clear previous data from a new memory block, use _MEMFILL with a zero byte value,
  • When a new memory block is created the memory .TYPE value will be 0.(this may be changeable in the future)
  • If the read only memory block .SIZE is 0, the memory block was not created!
  • All values created by memory functions MUST be freed using _MEMFREE with a valid _MEM variable.


Example: Shows how SINGLE numerical values can be passed, but unfixed STRING lengths cannot get the value.

DIM m AS _MEM DIM f AS STRING * 5 m = _MEMNEW(5) 'create new memory block of 5 bytes a = 12345.6 _MEMPUT m, m.OFFSET, a 'put single value _MEMGET m, m.OFFSET, b 'get single value PRINT "b = "; b c$ = "Doggy" _MEMPUT m, m.OFFSET, c$ 'put 5 byte string value _MEMGET m, m.OFFSET, d$ 'get unfixed length string value _MEMGET m, m.OFFSET, f 'get 5 byte string value e$ = _MEMGET(m, m.OFFSET, STRING * 5) 'get 5 byte string value PRINT "d$ = "; d$; LEN(d$) 'prints empty string PRINT "e$ = "; e$; LEN(e$) PRINT "f = "; f; LEN(f)

b = 12345.6 d$ = 0 e$ = Doggy 5 f = Doggy 5


See also:



Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Views
  • Page
  • Discussion
  • View source
  • History
Personal tools
  • Log in
Toolbox
  • What links here
  • Related changes
  • Special pages
  • Printable version