in my application I use a heap memory with code of "heap4". I have the need to use the "realloc" function to provide a already allocated memory area. I have write a wrapper to this function on "heap4" but I realized now that I do not know the size of the old allocation to copy the old content to the new memory area.
There is a function "mallocusablesize" that returns this value but how implement this routine in "heap_4" ?
You can know the size of a memory block allocated by vPortMalloc ?
Thanks very much.
The size of every block is stored in a BlockLink_t structure, in the
allocated block itself. See the implementation of vPortFree() for an
example of how it is accessed.
I understand, thank you so much.
To be precise:
// The block is being returned to the heap - it is no longer allocated.
block_size = (pxLink->xBlockSize & ~xBlockAllocatedBit) - xHeapStructSize;
Obtain block size allocate by "pvPortMalloc" rounded to "BYTE_ALIGNMENT"