我目前正在使用 DirectX 开发 C++ 游戏。引擎是我学校的一位教授给我们的,我一直在检查他引擎中的内存泄漏,我相信我已经将它们追溯到这种方法。首先,它甚至没有被调用,现在它被调用了,我不确定这是否是完全删除和清理 DirectX 加载的纹理的正确方法。
这是在 上调用的方法TextureManager
:
void DirectXTextureManager::clear()
{
map<wchar_t*, LPDIRECT3DTEXTURE9>::iterator it;
map<wchar_t*, LPDIRECT3DTEXTURE9>::iterator itToErase;
it = textures->begin();
while (it != textures->end())
{
wchar_t *keyToDelete = (*it).first;
LPDIRECT3DTEXTURE9 textureToDelete = (*it).second;
itToErase = it;
it++;
textures->erase(itToErase);
delete keyToDelete;
textureToDelete->Release();
textureToDelete = NULL;
}
stringTable->emptyStringTable();
}