Revision [14433]

This is an old revision of KeyPgReallocate made by CountingPine on 2009-08-29 21:56:43.



Reallocates storage for an existing reserved block of memory

result = Reallocate( pointer, count )

The address of allocated memory to be reallocated.
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.

Attempts to reallocate, or resize, memory previously allocated with KeyPgAllocate 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 KeyPgAllocate Allocate.
Reallocated memory must be deallocated, or freed, with KeyPgDeallocate 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.

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

a = Allocate( 5 * SizeOf(Integer) )   ' Allocate memory for 5 integers

If a = 0 Then Print "Error Allocating a": End

For i = 0 To 4
  a[i] = (i + 1) * 2   ' Assign integers to the buffer
Next i

b = Reallocate( a, 10 * SizeOf(Integer) )   ' Reallocate memory for 5 additional integers

If b <> 0 Then

    a = b

    For i = 5 To 9
      a[i] = (i + 1) * 2   ' Assign more integers to the buffer
    Next i

    For i = 0 To 9   ' Print the integers
      Print i, a[i]
    Next i

Else '' Reallocate failed, memory unchanged

    Print "Error Reallocating a"

    For i = 0 To 4   ' Print the integers
      Print i, a[i]
    Next i

End If

Deallocate a   ' Clean up

Dialect Differences:
Differences from QB:
See also:
Back to Memory Functions
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki phatcode