Исключение Direct3D9 при вызове Release

Когда я вызываю Release () на моем интерфейсе Direct3D9, программы немедленно останавливаются, и под отладчиком я получаю следующий вывод:

VERIFIER STOP 00000900: pid 0x570: A heap allocation was leaked.

В моем коде я создаю и освобождаю интерфейс D3D9 следующим образом:

IDirect3D9 *pD3D = Direct3DCreate9( D3D_SDK_VERSION );
// Do some work...
pD3D->Release();
pD3D = nullptr;

Между созданием и выпуском интерфейса я могу использовать его как обычно.

Это первый раз, когда у меня происходит нечто подобное, и я абсолютно не понимаю, что происходит не так. Это может быть проблема с моей установкой DirectX, но у меня есть другое программное обеспечение, использующее Direct3D9, работающее без проблем.

1

Решение

Похоже, вы подключили «Application Verifier» к вашему EXE. Appverif проверяет на утечки памяти, и он нашел один. Если вы прочитаете полный вывод, appverif даст вам трассировку стека утечки выделения. Вы можете отобразить его, отладив свой EXE с помощью WinDbg и запустив команду dps STACKTRACE_ADDRES,
Утечка памяти может исходить от вашего //do some work... код, может быть, вы забыли выпустить ссылочный объект d3d. Также бывает, что графические драйверы вызывают утечки памяти, обнаруженные appverif, в этом случае просто удалите ваш EXE из appverif.
В конце концов Windbg расскажет вам виновника.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector