我想确保不会发生内存泄漏。
struct tStruct{
uint32_t id;
A* a;
C b;
};
std::vector<tStruct*> m_vector;
我按照以下方式将对象推送和擦除到向量中。
推:
tStruct* myStruct = new tStruct;
myStruct->id = ID; // Some unique value
myStruct->a= new A();
myStruct->b = c; // c is an object
m_vector.push_back(myStruct);
擦除:
// Some stuff here
for (uint32_t i = 0; i < m_vector.size(); i++) {
if (m_vector.at(i)->id == ID) { // Some filtering
delete m_vector.at(i);
m_vector.erase(m_vector.begin() + i);
}
}
我理解正确吗
- 我需要明确删除 myStruct->a ,因为它是在堆中分配的?
- 对于其他成员,它们将被自动删除,因为它们在堆栈中。