【发布时间】:2014-11-13 04:22:22
【问题描述】:
我最近用使用 SSE 的类替换了一些 Vector/Matrix 类,现在正在确保内存正确对齐。
按照this question 的回答中的建议,我已将 operator new/delete 替换为需要它的类,并开始使用自定义分配器与 STL 容器一起使用 - 但是,似乎存在一些冲突两者之间:
首先,我只是从here 复制并粘贴了示例分配器类,当我将它与相关类型的 std::vector 一起使用时,它编译得很好,而没有我的自定义 new/delete,但是当我替换了这些函数,我从construct()函数中得到一个错误“没有匹配函数调用'operator new'”,
void construct(pointer p, const T& t) { new(p) T(t); }
我猜我已经替换了“通常的”新的事实以某种方式掩盖了新的位置?但是,鉴于我无法编写自己的新位置来获取它,我不确定该怎么做......我是整个自定义内存分配的新手(NPI),所以任何建议都会不胜感激!
我正在使用 Clang v3.4(或 gcc 4.1.2)在 Linux 上进行编译;不使用 C++11。
非常感谢。
【问题讨论】:
标签: c++ stl new-operator allocator placement-new