2014-08-28 3 views
0

В моем коде обнаружена утечка памяти, но я не могу понять, как ее исправить.Утечка памяти с PxMaterial

Когда я петля так:

for (;;) 
{ 
    physx::PxMaterial *pMaterial = pPhysic_physicsSDK->createMaterial(0.5f, 0.5f, 0.5f); 
    pMaterial->release(); 
} 

У меня переполнение памяти. Память не освобождается. Как выпустить его правильно?

Я пробовал удалить его «delete pMaterial», но доступ к нему не предоставляется.

ответ

0

Вы никогда не ломаетесь от петли for. Он никогда не перестанет работать, если вы не вызываете break;.

for (;;) 
{ 
    physx::PxMaterial *pMaterial = pPhysic_physicsSDK->createMaterial(0.5f, 0.5f, 0.5f); 
    pMaterial->release(); 

    if(**something is satisfied**) 
     break; 
} 

Это остановит переполнение памяти, потому что в конечном итоге выйти из цикла for.

+0

Я знаю это. Но в моем коде выше. Я предлагаю ему не есть всю мою память, потому что я выпускаю ее в каждом цикле. Но это так! –

+0

Вы пытались разыменовать указатель, используя «&» при вызове delete, вместо выпуска – Darrell

+0

попробуйте распечатать то, что содержит pMaterial после его выпуска, чтобы убедиться, что оно действительно выпущено ... посмотрите, помогает ли это – Darrell

Смежные вопросы