Category:

worklog: вопрос покажется дебильным.. он такой и есть

правильно ли я понимаю, что в heap размещаются ТОЛЬКО динамически выделяемые объекты (после всяких там malloc и иже с ним), а локальные и глобальные переменные остаётся в секции .data (которая должна быть физически доступна на момент обращения по адресам этих переменных - т.е., фактически, СРАЗУ после подачи питания)?

т.е. динамически выделять память можно только после того, как проинициализировано железо, дающее доступ к тому диапазону адресов.

Ну, это логично.

Но гарантируется ли то, что компилер не выдаст код, который туда полезет сам ещё до полного запуска всех железяк? Вроде не должно такого быть, верно? Или остаётся лишь уповать на то, что никаких обращений к каким-то библиотекам, которые вдруг захотят динамически выделить память, а там Hardfault.

Т.е. эта инициализация должна быть на самом раннем этапе, когда только-только настроили тактовый генератор, но ещё даже не попали в main(), верно?