C++允许重载operator new -全局的和每个类的-通常的operator new,operator new[]分别与new[]语句和放置operator new一起使用。
这三种方法中的前两种通常会因为使用自定义分配器和添加跟踪而超载。但是placement operator new看起来非常简单--它实际上不做任何内部的事情。例如,在Visual C++中,默认实现只返回传递给调用的地址:
//from new.h
inline void* operator new( size_t, void* where )
{
return where;
}它还能做什么呢?为什么以及如何明智地重载放置operator new
发布于 2015-03-04 15:29:14
为预保留区域定义自己的内存管理是一个很好的用途。
对同一物理数据有不同的视图(不需要移动数据)是其他有趣的用途。它还允许您将结构化文件读取为缓冲区上的字符,然后通过在缓冲区上定义该类的对象来叠加它们的逻辑结构。将其与文件的内存映射相结合,可以大大提高性能。内存映射硬件...所以,成千上万的应用程序!
https://stackoverflow.com/questions/3675059
复制相似问题