Lorsque je crée un nouveau btConvexHullShape, j'obtiens une exception de première chance. Code est:Bullet Physics Exception de première chance lors de la création d'un nouveau btConvexHullShape
btConvexHullShape* m_collisionShapes;
m_collisionShapes = static_cast<btConvexHullShape*>(malloc(sizeof(btConvexHullShape)* MAX_BODY_COUNT));
new (&m_collisionShapes[m_activeBodyCount]) btConvexHullShape();
J'ai aussi essayé:
std::vector<btConvexHullShape> m_hulls;
m_hulls.resize(MAX_BODY_COUNT);
L'exception se produit à l'appel et l'appel new
resize
. L'exception est:
Unhandled exception at 0x0102C983 in Useful_Engine.exe:
0xC0000005: Access violation reading location 0xFFFFFFFF.
Et il se produit à l'intérieur du code source de balle à:
/**@brief Return the elementwise product of two vectors */
SIMD_FORCE_INLINE btVector3
operator*(const btVector3& v1, const btVector3& v2)
{
#if defined(BT_USE_SSE_IN_API) && defined (BT_USE_SSE)
return btVector3(_mm_mul_ps(v1.mVec128, v2.mVec128));
#elif defined(BT_USE_NEON)
return btVector3(vmulq_f32(v1.mVec128, v2.mVec128));
#else
return btVector3(
v1.m_floats[0] * v2.m_floats[0],
v1.m_floats[1] * v2.m_floats[1],
v1.m_floats[2] * v2.m_floats[2]);
#endif
}
Est-ce un problème connu?
Correction de mon problème merci! Quel alignement de mémoire utilise-t-il? J'ai créé une pile personnalisée afin que je puisse aligner la mémoire! Quel alignement les objets nécessitent-ils? – Student123
Bullet utilise un alignement de 16 octets. Vous pouvez voir comment cela se fait dans btScalar.h, où toutes les remplacements d'allocation de mémoire sont. – Estiny