そうそう。そんな感じです。
実際には、ヒープとスタックの間の空間にshared libraryのtextとdataが
配置されているけど。
Linuxなら、cat /proc/<プロセスID>/maps とやるとそのプロセスの
アドレス空間の配置を見ることができるよ。

あと、余計なお世話かも知れないけど、確かに新たに拡張されたヒープの
中は必ず0でクリアされてるけど、だからと言ってmalloc()で確保する領域
が0でクリアされてるとは限らないので注意。malloc()はfree()で解放した
領域を再利用するけど、その際にわざわざクリアしたりしないので。
(それをやってくれるのはcalloc())