我正在编写Windows音频处理对象(APO)驱动程序,当前使用std::vector<float>
来方便地管理音频缓冲。
我注意到MS的要求,即我只能使用锁定的内存,并且对此有一个方便的实用程序:AERT_Allocate
我希望能够将AERT_Allocate
与std::vector<float>
一起使用。
有人可以提供有关如何执行此操作的指南/代码段,还是在这种情况下必须恢复为使用纯C数组或某些其他结构?
谢谢!
答案 0 :(得分:2)
std::vector
实际上根本不分配任何内存,因为它是由分配器完成的,可以在构造vector时提供它。向量仅管理分配器分配的内存。默认情况下,它使用std::allocator,但是您可以使用AERT_Allocate
轻松编写自己的分配器。不过,它必须满足allocator named requirements的要求,这意味着您必须提供足够的接口供模板使用。
例如,您可能希望将AERT_Allocate
放入分配器的allocate()
成员函数中,该成员函数是分配器的命名需求之一。