Я знаю, что есть такие разделы, как Stack, Heap, Code и Data. Stack/Heap они используют один и тот же раздел памяти, поскольку они могут расти независимо? Что это за раздел кода? Когда у меня есть функция, это часть стека или секция кода? Также что это инициализированный/неинициализированный сегмент данных?
Имеется ли доступный раздел памяти только для чтения? Когда у меня есть константная переменная, то, что на самом деле происходит, заключается в том, что компилятор отмечает раздел памяти как прочитанный или помещается в раздел памяти только для чтения.
Где хранятся статические данные? Где хранятся глобальные данные?
Любые хорошие ссылки/статьи для них?
Я думал, что разделы и макет памяти независимы от ОС и больше связаны с компилятором. Не выполняется ли стек, куча, код, данные [Инициализированный, неинициализированный] сегмент во всей ОС? Когда есть статические данные, что происходит, компилятор понял, что он статичен, что дальше, что он будет делать? Это компилятор, который управляет программой, и он должен знать, что делать правильно? Все компиляторы не должны следовать общим стандартам?