Как устроена память процесса?
Изучаю устройство памяти процесса. Как я понял, это можно изобразить так:

Написал на C++ тестовую программу. Вот фрагмент кода:
char * p = new char[13];
cout << (int)p << endl;
*p = 0x66;
MessageBox(0, p, ar2, MB_ICONINFORMATION);
В olly остановил выполнение программы на *p = 0x66:

В eax, равный 011E74A0, лежит адрес выделенной через new памяти. В olly в окне Memory map видно, что этот адрес идет уже после стека, а на первом изображении видно, что Heap должна быть после bbs и перед Stack. К тому же в olly во вкладке View неактивна кнопка Heap. Я так понимаю в данном случае куча даже не создалась? В ассемблере DS:[EAX](в olly ниже левее окна с ассемблерным кодом есть DS:[011E74A0]=0D), я перешел по адресу 011E74A0 и увидел, что там действительно лежит 0D. Абсолютный адрес, насколько я знаю, вычисляется как ЗначениеDS * 0x10 + 011E74A0. Получается DS = 0 или мне так повезло, что по адресу 011E74A0 лежит 0D? Помогите разобраться с устройством памяти в процессах.