Процессы имеют ограниченное количество пространства стека - намного меньше, чем объем памяти, доступный для malloc()
.
Используя alloca()
, вы значительно увеличите свои шансы получить ошибку переполнения стека (если вам повезет, или необъяснимый сбой, если вы этого не сделали).
Я выяснил, в чем проблема, после некоторого копания в моем коде, я заметил, что цикл for файла, который я не опубликовал, вызывал проблему.
Код проблемы:
void Renderer::OnUpdate()
{
....
for(int i = 0; i < (int)sizeof(m_Images); i++)
{
if(m_Images[i]->IsEnabled() == true)
{
m_Images[i]->OnUpdate();
}
}
....
}
Фиксированный код:
void Renderer::OnUpdate()
{
....
for(int i = 0; i < m_Images.size(); i++)
{
if(m_Images[i]->IsEnabled() == true)
{
m_Images[i]->OnUpdate();
}
}
....
}