Есть такой С++ код:
class Base {};
class Child : Base
{
struct Data { /* some data */ };
Data data;
};
//-----------------------------------
int main() {
std::vector<Base*> bases;
{
Child* child = new Child();
bases.push_back(reinterpret_cast<Base*>(child));
}
delete bases.back();
return 0;
}
Т.к. при его выполнении деструктор структуры Data вызван не будет, то произойдет ли утечка памяти? Или после выполнения строки
bases.push_back(reinterpret_cast<Base*>(child));
аллокатор памяти программы отметит память, занимаемую структурой Data как освободившуюся и утечки не будет?