Please enable JavaScript to view this site.

thinBasic Help Manual

* * HELP & MANUAL PREMIUM PACK 4 DEMO VERSION * *

This documentation was styled with a demo skin from the Premium Pack 4 add-on for Help & Manual. The contents of the skin are encrypted and not configurable. You can only publish HM projects with this skin. You cannot edit it or change it.

This version is copyright and may only be used for local testing purposes. It may not be distributed.

Please purchase the full version of the Premium Pack to get the configurable skins and remove this notice. The package will also include the Toolbox configuration utility for Premium Pack skins.

 

Description

 

Reallocate a block of memory previously allocated by Heap_Alloc, while preserving the original content.

Old memory block is released.

 

Syntax

 

ptr = HEAP_ReAlloc(OldPtr, Size)

 

Returns

 

DWORD

value > 0, if the function succeeds. Pointer to the new allocated memory block.

value = 0 in case of error.

 

 

Parameters

 

Name

Type

Optional

Meaning

OldPtr

Number

No

Pointer to memory previously allocated by Heap_Alloc. If zero, a completely new block of memory will be allocated.

Size

Number

No

Number of bytes to allocate. Up to 2GB.

 

Remarks

 

The theoretical maximum of 2 147 483 647 bytes is mostly theoretical, as 32bit process cannot address more than 2GB of RAM and thinBASIC process already occupies some memory. The actual number might be also lower due to memory fragmentation.

 

Restrictions

 

Use this function only with memory previously allocated by Heap_Alloc.

 

See also

 

Heap_Alloc, Heap_ReallocByStr, Redim Preserve

 

Examples

 

' Allocate 8 bytes

dim pMemory as dword = heap_alloc(8)

 

' Overlay array of bytes

dim bytes(8) as byte at pMemory

 

msgbox 0, "After creation:" + $CRLF + ToHumanReadableByteValues(pMemory)

 

' Writing data to the allocated memory, via overlay array

bytes(1) = 1, 2, 3, 4, 5, 6, 7, 8

 

msgbox 0, "After writing to memory via array:" + $CRLF + ToHumanReadableByteValues(pMemory)

 

' Re-allocate the original 8 bytes to 16 bytes block

dim pNewMemory as dword = heap_reAlloc(pMemory, 16)

 

msgbox 0, "After memory extension:" + $CRLF + ToHumanReadableByteValues(pNewMemory) + $CRLF(2) + "Notice the preserved original data"

 

' Release the memory (please note no need to free the original pMemory location)

heap_free(pNewMemory)

 

function ToHumanReadableByteValues(pMemoryLocation as dwordas string

 

  dim bytes(heap_size(pMemoryLocation)) as byte at pMemoryLocation

 

  return join$(bytes, " ")

 

end function

 

 

 

 

Created with Help+Manual 8 and styled with Premium Pack Version 4 © by EC Software