У меня есть этот код, который вылетает только в версии:
int main()
{
MyStruct s;
s.field = bla;
xTaskCreate(TestTask, "TestTask", 2000, &s, 1, 0);
// other tasks creation
vTaskStartScheduler();
}
void TestTask(void *p)
{
// some delay
MyStruct* s = (MyStruct*)p;
another_func(s->field); // hard fault
}
Мне удается исправить это так:
int main()
{
MyStruct* s = new MyStruct();
s->field = bla;
xTaskCreate(TestTask, "TestTask", 2000, s, 1, 0);
// other tasks creation
vTaskStartScheduler();
}
Я не понимаю, почему. Я исправил это или обошел проблему повреждения памяти, которая все еще может быть там?
Спасибо.