Código de memória vazamentos, parece estar vindo de ID3DXBuffer
-
05-07-2019 - |
Pergunta
Eu carregar um shader com o seguinte:
ID3DXBuffer* errors = 0;
ID3DXEffect* effect = 0;
HR(D3DXCreateEffectFromFile(
gd3dDevice, L"Shader.fx", 0, 0,
D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION,
0, &effect, &errors));
for (int i = 0; i < 3; i++) {
if(errors) {
errors->Release();
if (effect)
effect->Release();
errors = 0;
HR(D3DXCreateEffectFromFile(gd3dDevice, L"Shader.fx",
0, 0, D3DXSHADER_DEBUG, 0, effect, &errors));
}
else
break;
}
O que está a tentar carregar um shader e se obtém um erro / aviso ele tenta novamente mais 3 vezes antes de desistir.
Agora eu encontrei quando eu fechar a D3DX aplicação dá-me a seguinte mensagem:
D3DX: VAZAMENTOS memória detectada: 2 afectações não-liberto (486 bytes)
E isso só acontece quando há erros (ou seja, ele vai para o loop). Estou realmente não sei por que isso está acontecendo, alguma idéia?
OK I fixa-lo, foi apenas uma questão de lógica, 'erro' não tem 'libertação' chamado sobre ele na terceira tentativa, portanto, a questão.
Solução 2
OK I fixa-lo, foi apenas uma questão de lógica, 'erro' não tem 'libertação' chamado sobre ele na terceira tentativa, portanto, a questão.
Outras dicas
Nota:. ID3DXBuffer deve ser libertado mesmo quando a função DX (. Ex D3DXCreateEffectFromFile) não falhou