1. It's in the RAM, unless it's swapped out on disk. Same for the stack.
The stack is limited to 2 MB by default and it is... well, a stack, i.e. a LIFO structure. The heap is much larger and allows arbitrary allocations and deallocations.
2. Depends on the OS.
The heap consists of RAM + Swap Space. Swap Space is hard drive space reserved for use as RAM if you run low on physical RAM.
Obviously you want to try to avoid using swap space as much as possible since waiting for the hard drive to seek and fetch your memory is extremely slow compared to physical RAM.
Stack space is a small amount of RAM set aside for your program to pass arguments and so forth so you should not think of this RAM as a place to store your data.
Stack grows from the top of your memory downward, and the heap grows from bottom to the top.
Here's a simplified diagram to help you visualize:
--- Top of RAM
|
|- Reserved Stack Space
|- Available RAM ---> Swap Space
|- Heap Memory
|- Reserved System Memory
|
--- Bottom of RAM
As the heap (the RAM you program is using) grows upward it uses more and more available RAM until these is no more left, then starts using swap space.