У меня возникла дилемма, касающаяся интеллектуальных указателей и распределения памяти.
В моем классе интеллектуальных указателей у меня есть свой собственный способ выделения памяти через модуль памяти в моем движке.
template <class T>
class Object
{
public:
inline Object()
{
Init();
if (mEngine)
{
mObj = (T*) mEngine->GetMemoryManager()->Allocate(sizeof(T));
mRefCount = 1;
}
}
Теперь, когда я хочу Destroy()
мой движок, я хочу также освободить всю память. Это в первую очередь потому, что я хочу очистить всю память, связанную с моим движком, а также потому, что очистка mObj
зависит от моего менеджера памяти, поскольку он может использовать, например, пул памяти для выделения / освобождения памяти и удаления этого менеджера памяти приведет к нераспределенной памяти.
Значит, я выстрелил себе в ногу умными указателями? Есть ли умный способ решить эту проблему?