객체 포인터 벡터가 있습니다. 나는 그 객체들을 지울 수 있고 그 객체들에 의해 차지 된 메모리를 자유롭게 할 수 있기를 원한다. 이 메모리를 벡터의 요소를 삭제하고 해제하는 기능이스택에 할당 된 객체 포인터 벡터에서 요소 삭제
std::vector<Ball*> List;
:
이 객체 포인터를 포함하는 벡터이다 :
는 내가 현재 가지고하는 것은 이것이다
void BallManager::DeleteBall(int id)
{
List[id]->~Ball(); //Not sure if this is needed
delete List[id];
List[id] = NULL;
List.erase(List.begin()+id);
}
제 질문은 객체에 대한 소멸자를 호출해야합니까, 아니면 삭제로 처리 했습니까?
내가 매우 좋습니다
는 강하게 크리스가 언급 한 바와 같이 당신이 STL 컨테이너 아래 데모에서 요소를 삭제하면 다음 개체 포인터를 삭제에 대해 걱정할 필요가 없습니다, 스마트 포인터를 사용하는 운영자 추천 대신 스마트 포인터의 벡터. 포인터의 메모리 관리에 대해 걱정할 필요가 없습니다. 단순히'erase'를 호출하면 메모리와 모든 것을 할당 해제 할 수 있습니다. – chris