【发布时间】:2012-03-23 09:13:11
【问题描述】:
我在智能指针和内存分配方面遇到了难题。
在我的智能指针类中,我有自己的方式通过引擎中的内存模块分配内存。
template <class T>
class Object
{
public:
inline Object()
{
Init();
if (mEngine)
{
mObj = (T*) mEngine->GetMemoryManager()->Allocate(sizeof(T));
mRefCount = 1;
}
}
现在,当我想Destroy() 我的引擎时,我也希望释放所有内存。这首先是因为我想清理与我的引擎相关的所有内存,还因为mObj 的清理依赖于我的内存管理器,因为它可能使用例如内存池来分配/释放内存,并删除该内存管理器会导致内存无法分配。
那么我有没有用智能指针射中自己的脚?有没有聪明的方法来解决这个问题?
【问题讨论】:
-
也许一个能够证明问题的独立程序会有所帮助。
标签: c++ memory-management memory-leaks smart-pointers reference-counting