在C++标准库分配内存的大多数地方,用户可以通过提供满足Allocator要求的类来自定义它.例如,几乎所有容器都接受一个allocator模板参数,并std::allocate_shared返回一个shared_ptr包含的元素和控制块都通过提供的Allocator分配.
但是,标准库可以(可能)分配内存的地方有一些,但是没有Allocator提供支持.我能想到的是:
std::make_unique()(没有相应的allocate_unique())std::anystd::function (分配器支持将在C++ 17中删除)std::valarraystd::basic_filebuf(虽然std::basic_stringbuf 不使用分配器)std::inplace_merge()问题:
::operator new,plain new还是未指定的内存源?any并将其从中删除的原因是function什么?