如何在std:vector中使用AERT_Allocate

时间:2018-10-24 09:31:33

标签: c++ audio stdvector

我正在编写Windows音频处理对象(APO)驱动程序,当前使用std::vector<float>来方便地管理音频缓冲。

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

我希望能够将AERT_Allocatestd::vector<float>一起使用。
有人可以提供有关如何执行此操作的指南/代码段,还是在这种情况下必须恢复为使用纯C数组或某些其他结构?

谢谢!

1 个答案:

答案 0 :(得分:2)

std::vector实际上根本不分配任何内存,因为它是由分配器完成的,可以在构造vector时提供它。向量仅管理分配器分配的内存。默认情况下,它使用std::allocator,但是您可以使用AERT_Allocate轻松编写自己的分配器。不过,它必须满足allocator named requirements的要求,这意味着您必须提供足够的接口供模板使用。

例如,您可能希望将AERT_Allocate放入分配器的allocate()成员函数中,该成员函数是分配器的命名需求之一。