По пунктам. 1. >Очевидно же, например, что если определения своих new и delete вставить в файл с main(), то действовать будет на всю программу, в т.ч. на библиотечные функции.
С каких это щей? Ведь конструктор std::cout вызывается до запуска main и соответствующего переопределения new. Я сам писал код вызова конструкторов для статически объявленных и глобальных объектов для ARM7TDMI, наработки взял вот отсюда
https://github.com/ckormanyos на основе
http://www.springe …book/978-3-642-34687-3 (в книге приведён устаревший код, в репозитории более правильный).
2. "приплетение STL"
STL прямо касается поднятой в начальном топике темы, потому что можно написать свой аллокатор памяти и разместить всю требуемую для контейнеров память в стеке задачи (через массив в стеке). "Куча" не будет трогаться. Что есть круто и устраняет вообще все проблемы с использованием MPU при использовании STL.
3. стартапный код на ассемблере для GCC для ARM7TDMI я писал и знаю, как выделяется динамическая память и как связывается с CRT. Не так давно я здесь тему поднимал насчёт newlib и _sbrk, вы же мне в ней и отвечали (касалось использования ассемблерных команд для связи сишной переменной и регистра стека).
4. последний абзац очевиден при использовании двух операционок, я так и думал, и более просто не сделать.