www.freertos.org/a00110.html indicates configTOTAL_HEAP_SIZE is optional for the user but pvPortMalloc() is called from everywhere.
Where? I just looked and it says, as far as I can see:
The total amount of RAM available to the kernel.
This value will only be used if your application makes use of one of the sample memory allocation schemes provided in the FreeRTOS source code download. See the memory configuration section for further details.”
which is correct. If you use heap_1.c or heap_2.c then you need it. If you use heap_3.c or your own allocator, then you don't. Is that not correct?