我编写了一个内存分配器来解决 C++ (mingw) 中默认内存分配器的速度问题。
为此,我重载了全局 new 和 delete。我通过的所有请求都正确分配了正确大小的内存,但我仍然遇到分段错误。这些错误似乎与向量的使用有关。
我假设这些向量将被 new 和 delete 的全局覆盖所覆盖,但我可能错了。所以我要问的是我是否需要一个 stl 分配器来处理我的内存分配器,或者使用我忽略的全局 new 和 delete 是否可能存在其他问题?
我编写了一个内存分配器来解决 C++ (mingw) 中默认内存分配器的速度问题。
为此,我重载了全局 new 和 delete。我通过的所有请求都正确分配了正确大小的内存,但我仍然遇到分段错误。这些错误似乎与向量的使用有关。
我假设这些向量将被 new 和 delete 的全局覆盖所覆盖,但我可能错了。所以我要问的是我是否需要一个 stl 分配器来处理我的内存分配器,或者使用我忽略的全局 new 和 delete 是否可能存在其他问题?
我假设这些向量将被 new 和 delete 的全局覆盖所覆盖,但我可能错了。所以我要问的是我是否需要一个 stl 分配器来处理我的内存分配器,或者使用我忽略的全局 new 和 delete 是否可能存在其他问题?
C++ 标准(这里来自 C++11)说std::allocator
(用于标准容器的默认分配器):
(§20.6.9/1) 备注:存储是通过调用 ::operator new(std::size_t) (18.6.1) 获得的,但未指定何时或多久调用此函数。[...]
因此,您没有实现与向量一起使用的特殊分配器类这一事实不是问题。问题可能是由于您对全局运算符本身的定义有问题,或者可能是您使用向量的方式有问题。建议的后续步骤是:
::operator new
未替换时检查代码是否有效我相信需要实施STL 分配器vector
来控制分配