首页 > 解决方案 > 如何将 AERT_Allocate 与 std:vector 一起使用

问题描述

我正在编写一个 Windows 音频处理对象 (APO) 驱动程序,目前std::vector<float>为了方便管理音频缓冲而使用它。

我注意到 MS 要求我只能使用锁定的内存,并且为此提供了一个方便的实用程序:AERT_Allocate

我希望能够AERT_Allocate与我的std::vector<float>.
有人可以提供有关如何执行此操作的指导/代码片段,还是在这种情况下我必须恢复使用纯 C 数组或其他结构?

谢谢!

标签: c++audiostdvector

解决方案


std::vector实际上根本不分配任何内存,因为它是由分配器完成的,可以在向量的构造时提供。Vector 只管理内存,由分配器分配。它默认使用std::allocator,但您可以使用AERT_Allocate. 但是它必须满足分配器命名的要求,这意味着您必须为模板提供足够的接口才能使用。

例如,您可能想要放入AERT_Allocate分配器的allocate()成员函数,这是分配器的命名要求之一。


推荐阅读