_MEMCOPY - mkilgore/QB64pe GitHub Wiki
The _MEMCOPY statement copies a block of bytes from one memory offset to another offset in memory.
- 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.
- 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.
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 '' '' |
- _MEM, _MEM (function)
- _MEMNEW, _MEMGET (function)
- _MEMIMAGE, _MEMELEMENT
- _MEMGET, _MEMPUT
- _MEMFILL, _MEMFREE
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page