c++中的allocator是标准库中的一个类,负责内存分配管理。
下面是《STL源码剖析》中一个简单allocator实现的部分源代码:
deallocate:
template <class T>
inline void _deallocate(T* buffer)
{
::operator delete(buffer); //为什么不用 delete [] ? ,operator delete 区别于 delete
//operator delete 是一个底层操作符
}
destory:
template <class T>
inline void _destory(T *ptr)
{
ptr->~T();
}
destory负责调用类型的析构函数,销毁相应内存上的内容(但销毁后内存地址仍保留)
deallocate负责释放内存(此时相应内存中的值在此之前应调用destory销毁,将内存地址返回给系统,代表这部分地址使用引用-1)
参考:《STL源码剖析》 P44-45;
《C++ Primer》 P428-429.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)