다음과 같이 클래스 생성 중에 객체가 생성되는 경우 :
class MyClass
{
private:
std::vector < MyObject*> MyObjects = { new MyObject };
...
소멸자 중에 벡터의 객체를 삭제해야합니까?
예, std::vector < MyObject*> MyObjects
개체에 대한 포인터를 포함합니다. 벡터는 객체를 소유하지 않는다고 가정하므로 기본적으로 삭제하지 않습니다.
객체를 자동으로 소멸 시키려면 유형을 변경하십시오.
std::vector <std::unique_ptr<MyObject>> MyObjects
또는 다음에서 모든 포인터를 삭제하십시오.
std::unique_ptr
메모리를 확보 할 수 있으므로 일반적으로 사용 이 선호되는 솔루션입니다. 그러나 기본 할당 / 복사 생성자가 필요하지 않습니다. 할당 / 복사없이 살거나 이동 시맨틱으로 만 머 무르거나 할당 / 복사를 명시 적으로 정의해야합니다. 그러나 단순한 포인터로 할당 / 복사를 정의해야하기 때문에 큰 가격은 아닙니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다