I've just heard that, C++ has two kinds of memory block that can be allocated and deallocated during runtime. It is said that, "malloc" and "free" use the memory called Free Memory Space, "new" and "delete" use the Heap.
Well, I wonder that what's the difference between Free Memory Space and Heap ?
Does the underlying implementation of C++'s operator new rely on C's malloc?
If "new" and "malloc" do use different memory block, then does the compiler have necessary for reserving a certain amount of memory for these two kinds of block (respectively) to prevent the memory allocated by "new" and the memory allocated by "malloc" from overlapping ?