メモリリークが発生しないことを確認したい。
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 を削除する必要がありますか?
- 他のメンバーについては、スタックにあるため、自動的に削除されます。