Как использовать AERT_Allocate с std: vector - PullRequest
0 голосов
/ 24 октября 2018

Я пишу драйвер Windows Audio Processing Object (APO) и в настоящее время использую std::vector<float> для удобства управления буферизацией аудио.

Я отмечаю требование MS о том, что я могу использовать только заблокированную память и что тамдля этого имеется удобная утилита: AERT_Allocate

Я хотел бы иметь возможность использовать AERT_Allocate с моим std::vector<float>.
Может кто-нибудь предоставить руководство / фрагмент кода каккак я могу это сделать, или я должен вернуться к использованию чистого массива C или какой-либо другой структуры в этом случае?

Спасибо!

1 Ответ

0 голосов
/ 24 октября 2018

std::vector фактически вообще не выделяет никакой памяти, поскольку это делается распределителями, которые могут быть предоставлены при построении вектора.Вектор только управляет памятью, которую выделяет распределитель.Он использует std :: allocator по умолчанию, но вы можете легко написать свой собственный распределитель, используя AERT_Allocate.Он должен соответствовать распределителю с именованными требованиями , а это означает, что вы должны предоставить достаточный интерфейс для шаблонов для работы.

Например, вы, вероятно, захотите поместить AERT_Allocate вallocate() функция-член вашего распределителя, которая является одним из именованных требований распределителя.

...