Reallocate
 
Reallocates storage for an existing reserved block of memory

Syntax

Declare Function Reallocate( pointer As Any Ptr, count As Integer ) As Any Ptr

Usage

result = Reallocate( pointer, count )

Parameters

pointer
The address of allocated memory to be reallocated.
count
The number of bytes, in total, to be reallocated.

Return Value

The address of the reallocated memory. A null (0) pointer is returned if reallocation was unsuccessful, and the original memory pointed to by pointer remains unchanged.

Description

Attempts to reallocate, or resize, memory previously allocated with Allocate. The contents of the buffer are preserved, although if count is less than the original size of the memory block, the buffer will be truncated.

If pointer is null (0), then ReAllocate behaves identically to Allocate.

Reallocated memory must be deallocated, or freed, with Deallocate when no longer needed.

This function is not part of the FreeBASIC runtime library, it is an alias for the C runtime library's realloc, so it's not guaranteed to be thread safe in all platforms.

NOTE: Reallocating a pointer inside an object function, when that pointer contains the parent object of the function, is undefined, and will likely result in horrible crashes.

Example

Dim a As Integer Ptr, b As Integer Ptr, i As Integer

a = Allocate( 5 * Len(Integer) )   ' Allocate memory for 5 integers
For i = 0 To 4
  a[i] = (i + 1) * 2   ' Assign integers to the buffer
Next i

b = Reallocate( a, 10 * Len(Integer) )   ' Reallocate memory for 5 additional integers
For i = 5 To 9
  b[i] = (i + 1) * 2   ' Assign more integers to the buffer
Next i

For i = 0 To 9   ' Print the integers
  Print b[i];
Next i
Print

Deallocate b   ' Clean up

Output is:
2 4 6 8 10 12 14 16 18 20
 


Dialect Differences

  • Not available in the -lang qb dialect unless referenced with the alias __Reallocate.

Differences from QB

  • New to FreeBASIC

See also