Code Lecks Speicher, scheint von ID3DXBuffer zu kommen
-
05-07-2019 - |
Frage
Ich lade einen Shader mit dem folgenden:
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;
}
Welche versucht, einen Shader zu laden und wenn es einen Fehler bekommt / Warnung versucht es wieder 3 mal, bevor er aufgibt.
Jetzt habe ich gefunden, wenn ich die Anwendung D3DX gibt mir die folgende Meldung zu schließen:
D3DX: Speicherlecks festgestellt: 2 Zuteilungen unfreed (486 bytes)
und dies geschieht nur, wenn es Fehler (das heißt, es geht in die Schleife). Ich bin wirklich nicht sicher, warum dies geschieht, irgendwelche Ideen?
OK ich es behoben wurde nur ein logisches Problem, ‚Fehler‘ nicht über ‚Freisetzung‘ rief er auf dem dritten Versuch daher das Problem.
Lösung 2
OK ich es behoben wurde nur ein logisches Problem, ‚Fehler‘ nicht über ‚Freisetzung‘ rief er auf dem dritten Versuch daher das Problem.
Andere Tipps
. Hinweis: ID3DXBuffer auch freigegeben werden soll, wenn DX-Funktion (. Ex D3DXCreateEffectFromFile) nicht scheitern