Difference between revisions of "MEMNEW"

From QB64 Wiki
Jump to navigation Jump to search
imported>Clippy
m
imported>SMcNeill
(style guidelines)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
The '''_MEMNEW''' function allocates new memory and returns a [[_MEM]] memory block referring to it.
+
{{DISPLAYTITLE:_MEMNEW}}
 +
The [[_MEMNEW]] function allocates new memory and returns a [[_MEM]] memory block referring to it.
  
  
 
{{PageSyntax}}
 
{{PageSyntax}}
::: memory_block = '''_MEMNEW(''byte_size'')'''
+
: {{Parameter|memoryBlock}} = [[_MEMNEW]]({{Parameter|byteSize}})
  
  
 
{{Parameters}}
 
{{Parameters}}
* The ''byte size'' parameter is the desired byte size of the memory block based on the variable [[type]] it will hold.
+
* The {{Parameter|byteSize}} parameter is the desired byte size of the memory block based on the variable [[type]] it will hold.
  
  
''Usage:''
+
{{PageDescription}}
* The ''memory block'' value created holds the starting OFFSET, SIZE, TYPE and ELEMENTSIZE.  
+
* The {{Parameter|memoryBlock}} value created holds the elements .OFFSET, .SIZE, .TYPE and .ELEMENTSIZE.  
* _MEMNEW does not clear the data previously in the memory block it allocates for speed purposes.
+
* [[_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,
+
* To clear previous data from a new memory block, use [[_MEMFILL]] with a byte value of 0.
* All values created by memory functions MUST be freed using [[_MEMFREE]] with a valid [[_MEM]] variable type.
+
* When a new memory block is created the memory .TYPE value will be 0.
* 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.'''
* '''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.'''
  
  
 
+
{{PageExamples}}
''Example:'' Shows how [[SINGLE]] numerical values can be passed, but unfixed [[STRING]] lengths cannot get the value.
+
''Example:'' Shows how [[SINGLE]] numerical values can be passed, but non-fixed [[STRING]] lengths cannot get the value.
 
{{CodeStart}} '' ''
 
{{CodeStart}} '' ''
 
{{Cl|DIM}} m {{Cl|AS}} {{Cl|_MEM}}
 
{{Cl|DIM}} m {{Cl|AS}} {{Cl|_MEM}}
Line 45: Line 46:
  
  
''See also:''
+
{{PageSeeAlso}}
 
* [[_MEM]], [[_MEMPUT]]
 
* [[_MEM]], [[_MEMPUT]]
 
* [[_MEMGET]], [[_MEMGET (function)]]
 
* [[_MEMGET]], [[_MEMGET (function)]]

Latest revision as of 15:54, 8 September 2017

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


Syntax

memoryBlock = _MEMNEW(byteSize)


Parameters

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


Description

  • The memoryBlock value created holds the elements .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 byte value of 0.
  • When a new memory block is created the memory .TYPE value will be 0.
  • 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.


Examples

Example: Shows how SINGLE numerical values can be passed, but non-fixed 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