1)how the free(void *ptr) determine howmany bytes need to be freed when called. 2)is thr any differnce b/w typedef and #define?
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.