The number of bites to be freed is part of an invisible (to you) overhead maintained by the heap allocation software.

There is a huge difference between typedef and #define. The build process consists of preprocessing (before the compiler ever sees the file), compilation, linking, and possibly locating. Learn the functions of these steps, or be behind the curve of understanding.