What is the initial size with which a stack/heap is created? and who decides it?
This is compiler- and OS-specific.
Wherein physical memory are they are created? I see a general description as "Heap is created in the top-level-address and stack at the low-level-address".
This is compiler- and OS-specific.
Really. The language standard does not mandate the minimum stack size nor specifies the location of either the stack or the heap in memory. And the reason for that is to make C programs less dependent on these details and therefore more portable to different platforms (read: different OSes, different CPUs, different compilers).