Hi @andréluis,
Heap3 scheme only wraps the standard C library malloc() and free() functions to provide thread safety. In this case, when you use pvPortMalloc(), the function will use malloc() to allocate memory.
It's not like vPortFree() isn't working. It is, but you will not see the change in the Heap and Stack Usage option because as per my understanding, free() doesn't delete nor clear the memory, it only marks the space as available for future malloc() allocations.
You can see this by yourself by allocating memory using pvPortMalloc(), then free it with vPortFree(). Then immediately allocate the same amount of memory, you will see that the Heap and Stack Usage will increase only once and not twice.
For more information regarding this, I would recommend you take a look to the FreeRTOS documentation.
I hope this helps.
Regards,
Daniel.