Что происходит при утечке «устройства» и «контекст устройства»; — конкретно d3d?

Мне немного непонятно, как именно эти объекты функционируют, образуя мосты между программным и аппаратным обеспечением. Являются ли они в значительной степени просто программными объектами, которые разрушаются, если вы пропускаете их в кучу, когда завершаете процесс? Или есть что-то еще?

Причина, по которой я спрашиваю, заключается в том, что я забыл, чтобы моя подпрограмма инициализации изменила свой механизм состояний и, следовательно, переключила подпрограммы, в результате чего она создала столько «DeviceContexts» и «Devices», сколько возможно, и переназначила их на одни и те же указатели (через d3d11createdevice), прежде чем перехватила у меня утечка памяти около 2Гб.

Затем мне пришло в голову, что я действительно понятия не имею, что значит не выпустить эти объекты. Есть ли у них аппаратный компонент, о котором я должен беспокоиться, если эти объекты будут протекать так, что мне нужно перезагрузить компьютер? Или прекращение процесса в значительной степени убирает беспорядок?

Я перезагружаю свой компьютер независимо от того, чтобы быть уверенным. Но было бы неплохо точно знать, что происходит, когда вы используете такие низкоуровневые интерфейсы, и вам не удается их должным образом уничтожить / освободить.

0

Решение

Операционная система очистит все эти контексты устройства, когда ваша программа завершится. В противном случае некорректно работающая программа может вывести систему из строя.

Ваше другое беспокойство (выраженное в комментарии) о повреждении оборудования также не должно быть возможным. Если бы это была вредоносная программа, она могла бы нанести ущерб. Возможно, вы можете повредить оборудование, напрямую обращаясь к нему, но для этого нужен драйвер (и контекст устройства, который находится между вашей программой и драйвером).

1

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


По вопросам рекламы [email protected]