1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-29 10:30:36 +00:00
QB64-PE/internal/help/_MEM_(function).txt
SteveMcNeill 33adc04fc4 Add temp folder to repo. It's necessary as well!
Just more initial setting on... nothing much to see here.
2022-04-28 13:39:56 -04:00

72 lines
2.1 KiB
Plaintext

{{DISPLAYTITLE:_MEM (function)}}
The [[_MEM]] function returns a _MEM block referring to the largest possible continuous memory region beginning at a variable's offset.
{{PageSyntax}}
: {{Parameter|memoryBlock}} = [[_MEM]]({{Parameter|referenceVariable}})
===Unsecure syntax===
: {{Parameter|memoryBlock}} = [[_MEM]]({{Parameter|offset}}, {{Parameter|byteSize}})
{{Parameters}}
* The {{Parameter|memoryBlock}} created will hold the {{Parameter|referenceVariable}} or [[arrays|array]] value(s), type and byte size in a separate memory area.
* The secure syntax {{Parameter|referenceVariable}} is an existing variable's referenced memory block.
* The unsecure syntax's designated {{Parameter|offset}} and {{Parameter|byteSize}} cannot be guaranteed. '''Avoid if possible.'''
{{PageDescription}}
* The {{Parameter|memoryBlock}} [[_MEM]] type variable holds the following read-only elements: 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|length]] string.'''
{{PageExamples}}
''Example:'' Assigning values to reference variables in memory.
{{CodeStart}} '' ''
{{Cl|DIM}} {{Cl|SHARED}} m(3) {{Cl|AS}} {{Cl|_MEM}}
{{Cl|DIM}} {{Cl|SHARED}} Saved(3)
m(1) = {{Cl|_MEM (function)|_MEM}}(x)
m(2) = {{Cl|_MEM (function)|_MEM}}(y)
m(3) = {{Cl|_MEM (function)|_MEM}}(z)
x = 3: y = 5: z = 8
{{Cl|PRINT}} x, y, z
Save x, y, z
x = 30: y = 50: z = 80
{{Cl|PRINT}} x, y, z
RestoreIt
{{Cl|PRINT}} x, y, z
{{Cl|_MEMFREE}} m(1)
{{Cl|_MEMFREE}} m(2)
{{Cl|_MEMFREE}} m(3)
{{Cl|END}}
{{Cl|SUB}} Save (n1, n2, n3)
Saved(1) = n1
Saved(2) = n2
Saved(3) = n3
{{Cl|END SUB}}
{{Cl|SUB}} RestoreIt
{{Cl|_MEMPUT}} m(1), m(1).OFFSET, Saved(1)
{{Cl|_MEMPUT}} m(2), m(2).OFFSET, Saved(2)
{{Cl|_MEMPUT}} m(3), m(3).OFFSET, Saved(3)
{{Cl|END SUB}} '' ''
{{CodeEnd}}{{small|Code by SMcNeill}}
{{PageSeeAlso}}
* [[_MEM]] {{text|(variable type)}}
* [[_MEMNEW]], [[_MEMCOPY]]
* [[_MEMGET]], [[_MEMPUT]]
* [[_MEMFILL]], [[_MEMIMAGE]]
* [[_MEMFREE]]
{{PageNavigation}}
<