Box2D CreateBody возвращает неверный указатель, вызывает segfault

Я работаю над проектом Box2D и продолжаю получать ошибки сегментации. Вот код проблемы:

PhysicsObject::PhysicsObject(b2World *w, sf::Texture& tex, int sX,
int sY, b2BodyDef bodyDef, b2FixtureDef fixDef)
: DrawableObject(tex, sX, sY)
{
body = w->CreateBody(&bodyDef);
body->CreateFixture(&fixDef);
}

PhysicsObject имеет защищенное тело переменной члена, которое является b2Body*, Я получаю ошибку сегментации на body->CreateFixture линия. Мой отладчик показывает, что w->createbody call меняет значение body, поэтому возвращает указатель. Тем не менее, я думаю, что указатель нигде не указывает. Кроме того, мир успешно создает тело; если я закомментирую проблемную линию, тело будет создано, и я вижу, как оно рисуется вместе с остальной частью моей программы. Кто-нибудь знает, что может быть причиной неверного указателя тела?
Спасибо

РЕДАКТИРОВАТЬ:

Вот код из Box2D CreateBody функция:
Также, IsLocked() был ложным, когда я проверил это, так что это утверждение не проблема

b2Body* b2World::CreateBody(const b2BodyDef* def)
{
b2Assert(IsLocked() == false);
if (IsLocked())
{
return NULL;
}

void* mem = m_blockAllocator.Allocate(sizeof(b2Body));
b2Body* b = new (mem) b2Body(def, this);

// Add to world doubly linked list.
b->m_prev = NULL;
b->m_next = m_bodyList;
if (m_bodyList)
{
m_bodyList->m_prev = b;
}
m_bodyList = b;
++m_bodyCount;

return b;
}

Также это значение body после вызова функции createbody
(b2Body *) 0xc1ad40
Вроде бы нормальный указатель

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]