fuite memoire introuvable
je crée un clone de minecraft, mais j'ai une fuite de mémoire
les chunks sont alloué dans une thread pool dynamiquement
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| void ChunkThreadPool::loop(int id)
{
while(running)
{
sf::sleep(sf::milliseconds(50));
if(threads[id].state==1)
{
threads[id].output = new Chunk(threads[id].input);
threads[id].state=2;
}
}
} |
puis le pointeur est mis dans une unordered map
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| void World::loadGenerated()
{
for(unsigned int i=0;i<generated.size();i++)
{
ivec3 pos=generated[i]->Getpos();
generated[i]->buildMesh();
chunkMap[pos]=generated[i];
clipChunkMesh(pos);
generated[i]->GetMesh()->setBuffers();
}
generated.clear();
} |
puis libéré
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void World::unloadChunks(vec3 pos)
{
ivec3 key;
for(std::pair<ivec3,Chunk*> element : chunkMap)
{
key=element.first;
if(key.x-(pos.x/32)>3 || key.x-(pos.x/32)<-3 || key.y-(pos.y/32)>3 || key.y-(pos.y/32)<-3 || key.z-(pos.z/32)>3 || key.z-(pos.z/32)<-3)
{
delete element.second;
chunkMap.erase(key);
}
}
} |
mais j'ai une fuite de mémoire, ca prend de plus en plus mémoire quand je génère des chunks
Quelqu'un aurai une idée?
quel serai le meilleurs moyen de debugger ca?(Windows CodeBlocks)