push_back () вызывает остановку программы перед входом в main ()
Я занимаюсь разработкой на c ++ для своей платы STM32F3 Discovery и использую std :: deque в качестве очереди. После попытки отладки моего кода (непосредственно на устройстве с ST-link или в симуляторе) код в конечном итоге останавливается на точке останова, прежде чем даже вводить мой код в main (). Тем не менее, SystemInit () настраивает плату просто отлично ..
Я проследил это поведение до использования push_back () (и push_front), поскольку комментирование его из кода решает проблему. Через дизассемблирование я обнаружил, что после его использования выполнение останавливается в команде BKPT с точкой останова и не будет двигаться дальше после возобновления выполнения. Эта инструкция является частью вызова _sysopen () с путем вызова:
__main -> __scatterload -> __scatterload_null -> __rt_entry -> __rt_lib_init -> __rt_lib_init_atexit_1 -> _initio -> freopen -> _sysopen
Что меня интригует, так это призыв к_initio
, который отсутствует, если push_back не используется, потому что нет__rt_lib_init_atexit_1
, Введение push_back также увеличивает размер кода с 10 кБ до 34 кБ.
Может ли это быть результатом неправильной конфигурации или я должен попробовать другую IDE? У меня нет идей.