_MEMCOPY - mkilgore/QB64pe GitHub Wiki

The _MEMCOPY statement copies a block of bytes from one memory offset to another offset in memory.

Syntax

_MEMCOPY sourceBlock, sourceBlock.OFFSET, sourceBlock.SIZE TO destBlock, destBlock.OFFSET

Parameters

  • sourceBlock is the source memory block name created AS _MEM.
  • sourceBlock.OFFSET is the dot _OFFSET within the source memory block to read from.
  • sourceBlock.SIZE is the total number of bytes to transfer based on actual size.
  • destBlock is the destination _MEM memory block name to transfer data to.
  • destBlock.OFFSET is the dot _OFFSET within the dest _MEM memory block to write to.

Description

  • The dot OFFSET is the memory block's start location in memory. Add bytes to place data further into the block.
  • The dot SIZE is the total byte size of the memory block to transfer. You can transfer all or a portion of the data bytes.
  • The memory block regions may overlap.
  • Always free memory blocks after values have been transferred to variables and are no longer required.

Examples

Example: Swapping data from one STRING variable to another. Fixed length strings are recommended for speed.

m = _MEMNEW(10)
n = _MEMNEW(100)

_MEMPUT m, m.OFFSET, "1234567890"

s$ = SPACE$(10) 'to load into a variable length string set its length first
_MEMGET m, m.OFFSET, s$
PRINT "in:[" + s$ + "]"

_MEMCOPY m, m.OFFSET, m.SIZE TO n, n.OFFSET 'put m into n

b$ = SPACE$(10)
_MEMGET n, n.OFFSET, b$
PRINT "out:[" + b$ + "]" 
_MEMFREE m: _MEMFREE n 'always clear the memory when done '' ''

Snippet: Instead of copying each array element, one at a time in nested FOR loops, _MEMCOPY does it in one statement instantly.

'copy array a to array b in memory instantly:
[[DIM|DIM]] ma AS [[_MEM|_MEM]]: ma = [[_MEM (function)|_MEM]](a()) 'place array data into blocks
[[DIM|DIM]] mb AS [[_MEM|_MEM]]: mb = [[_MEM (function)|_MEM]](b())
[[_MEMCOPY|_MEMCOPY]] ma, ma.OFFSET, ma.SIZE [[TO|TO]] mb, mb.OFFSET
[[_MEMFREE|_MEMFREE]] ma: [[_MEMFREE|_MEMFREE]] mb 'clear the memory when done '' ''

See also


Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
⚠️ **GitHub.com Fallback** ⚠️