Утечка ресурсов DirectX 10 - PullRequest
       3

Утечка ресурсов DirectX 10

6 голосов
/ 15 июня 2010

В конце моего приложения DirectX я получаю «Устройство Direct3D имеет ненулевой счетчик ссылок, что означает, что некоторые объекты не были освобождены». Приложение большое и не написано мной, как я могу отладить, какие ресурсы не освобождаются?

Ответы [ 2 ]

6 голосов
/ 15 июня 2010

Первый шаг - включить библиотеки отладки DirectX, через панель управления DirectX . (IIRC, это необязательный элемент при установке DirectX SDK, поэтому может потребоваться их установка.)

При следующем запуске приложения DirectX должен предоставить вам больше информации о том, что происходит. В частности, вы захотите поискать строку вроде этой:

D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1c17 to debug
                                                allocation id ^^^^^^

Или вот так:

Direct3D9: (WARN) :Memory Address: 00385580 lAllocID=1 dwSize=000047f8, (pid=00000474)
                                       allocation id ^

Если у вас есть идентификатор выделения, вы можете указать DirectX прерывать, когда это распределение происходит в вашей программе, установив параметр Break on AllocID на панели управления DirectX (или указав ключ реестра, упомянутый выше).

Затем нужно изучить стек вызовов, чтобы увидеть, в чем заключается вызов DirectX.

1 голос
/ 15 июня 2010

Вы можете использовать утилиту панели управления DirectX, как описано здесь . Установите флажок «Разорвать утечки памяти», чтобы можно было использовать «Разрыв по AllocID», чтобы определить, какой ресурс не был освобожден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...