В продолжение темы delete[]
От: Zakhar Россия  
Дата: 19.04.02 08:00
Оценка:
Есть структура
struct CAttr
{
LPVOID pData;
DWORD size;
CAttr(LPCVOID _pData, DWORD _size)
{
size = _size;
pData = new BYTE[size];
memcpy(pData, _pData, _size);
}
};

В нее надо записывать объекты произвольных типов (скалярные типы, массивы, объекты классов) — через указатели.
Происходит это следующим образом (например):

DWORD* pdwScalar = new DWORD;
CAttr attr(pdwScalar, sizeof(DWORD));
delete pdwScalar; // Забыли

// или:

CObject* pObject = new CObject;
CAttr attr(pObject, sizeof(CObject));
delete pObject; // Забыли

Соответственно, возникает проблема при вызове деструктора — как освободить память, когда мы утеряли информацию о типе.

Есть ли другой подход к решению этой проблемы?

Заранее спасибо всем ответившим!
Бороться, искать, найти и перепрятать!