CAllocate
Allocates memory for a certain number of elements from the free store and clears the contents
Declare Function CAllocate cdecl ( ByVal num_elements As UInteger, ByVal size As UInteger = 1 ) As Any Ptr
result = CAllocate( num_elements [, size ] )
num_elements
If successful, the address of the start of the allocated memory is returned. Otherwise, the null pointer (0) is returned.
CAllocate initializes the allocated memory with zeros. Consequently, CAllocate can be also directly used with String or Udt containing string, because the string descriptor is cleared (set to 0) first.
Outputs:
Syntax
Declare Function CAllocate cdecl ( ByVal num_elements As UInteger, ByVal size As UInteger = 1 ) As Any Ptr
Usage
result = CAllocate( num_elements [, size ] )
Parameters
num_elements
The number of elements to allocate memory for.
sizeThe size, in bytes, of each element.
Return Value
If successful, the address of the start of the allocated memory is returned. Otherwise, the null pointer (0) is returned.
Description
CAllocate initializes the allocated memory with zeros. Consequently, CAllocate can be also directly used with String or Udt containing string, because the string descriptor is cleared (set to 0) first.
Example
' Allocate and initialize space for 10 integer elements.
Dim p As Integer Ptr = CAllocate(10, SizeOf(Integer))
' Fill the memory with integer values.
For index As Integer = 0 To 9
p[index] = (index + 1) * 10
Next
' Display the integer values.
For index As Integer = 0 To 9
Print p[index] ;
Next
' Free the memory.
Deallocate(p)
Dim p As Integer Ptr = CAllocate(10, SizeOf(Integer))
' Fill the memory with integer values.
For index As Integer = 0 To 9
p[index] = (index + 1) * 10
Next
' Display the integer values.
For index As Integer = 0 To 9
Print p[index] ;
Next
' Free the memory.
Deallocate(p)
Outputs:
10 20 30 40 50 60 70 80 90 100
Platform Differences
- This procedure is not guaranteed to be thread-safe.
Dialect Differences
- Not available in the -lang qb dialect unless referenced with the alias __Callocate.
Differences from QB
- New to FreeBASIC
See also