From cfde01080838038af4ae5ea81ad48d5dec3a1dc5 Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Mon, 10 Sep 2007 19:18:50 +0000 Subject: [PATCH] fixed memory leaks caused by pool allocator, thanks Dev0 --- .../CollisionDispatch/btCollisionDispatcher.cpp | 6 ++---- src/LinearMath/btPoolAllocator.h | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp index 84ef418e5..65a84316a 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp +++ b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp @@ -41,9 +41,6 @@ btCollisionDispatcher::btCollisionDispatcher (btCollisionConfiguration* collisio setNearCallback(defaultNearCallback); - - - int maxElements = 16384; m_collisionAlgorithmPoolAllocator = new btPoolAllocator(m_collisionConfiguration->getCollisionAlgorithmMaxElementSize(),m_collisionConfiguration->getCollisionAlgorithmPoolSize()); m_persistentManifoldPoolAllocator = new btPoolAllocator(sizeof(btPersistentManifold),m_collisionConfiguration->getPersistentManifoldPoolSize()); @@ -68,7 +65,8 @@ void btCollisionDispatcher::registerCollisionCreateFunc(int proxyType0, int prox btCollisionDispatcher::~btCollisionDispatcher() { - + delete m_collisionAlgorithmPoolAllocator; + delete m_persistentManifoldPoolAllocator; } btPersistentManifold* btCollisionDispatcher::getNewManifold(void* b0,void* b1) diff --git a/src/LinearMath/btPoolAllocator.h b/src/LinearMath/btPoolAllocator.h index ecb1a48a0..39dcd9788 100755 --- a/src/LinearMath/btPoolAllocator.h +++ b/src/LinearMath/btPoolAllocator.h @@ -45,6 +45,11 @@ public: *(void**)p = 0; } + ~btPoolAllocator() + { + delete m_pool; + } + void* allocate(int size) { btAssert(!size || size<=m_elemSize);