На данный момент я делаю свою собственную игру на C++, и для этого я использую физику Box2D. Если я пытаюсь выйти из моей игры он выдает ошибку мне:C++ и Box2D физика: сбой при выходе
ошибка Exception при 0x003A2AE4 в NinjaPlatformer.exe: 0xC0000005: нарушение доступа при чтении в положении 0xFEEEFEF2
В строке b2Contact* c = ce->contact;
Вот код обертывания:
for (b2ContactEdge* ce = body->GetContactList(); ce != nullptr; ce = ce->next) {
b2Contact* c = ce->contact;
if (c->IsTouching()) {
// something
}
}
Мое предположение, что если я пытаюсь закрыть приложение объемно-контакты удаляются первыми, а затем программа пеет еще один раз в цикл for, а затем строка ce = body->GetContactList()
вернет ошибку, потому что тело не определено, это правильно?
И если это правда, то как я могу проверить в для цикла, если с не является пустым, потому что, когда игра вылетает с имеет значение: 0xFEEEFEEE {других = ??? контакт = ??? пред = ??? ...}.
И в результате, что се имеет это странное значение с также имеет странное значение одна строка позже: 0x07932d78 {m_type = b2_dynamicBody | -17891604 (-17891602) m_flags = 65262 m_islandIndex = -17891602 ...}
И тогда в моем коде, я могу, как, если его равен NULL? – Gykonik
Ничего себе, это сработало. b2ContactEdge не имеет конструктора, потому что это только структура, но я добавил его в структуру, и теперь он работает отлично. Большое спасибо! :) – Gykonik