STL:: allocator之deallocate & destory的区别与联系
c++中的allocator是标准库中的一个类,负责内存分配管理。下面是《STL源码剖析》中一个简单allocator实现的部分源代码:deallocate:templateinline void _deallocate(T* buffer){::operator delete(buffer);//为什么不用 delete [] ?,operator
·
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.
更多推荐
已为社区贡献1条内容
所有评论(0)