아래 코드는 메모리 관리의 잘못된 예를 보여줍니다. 항목은 임시 복사본이 대신 반환되기 때문에 할당 취소되지 않습니다.임시 개체를 반환하지 않는 방법 (C++)
나는 몇 주 동안 프로그래밍 포럼을 조사하고 있지만 항목을 할당 해제 할 수있는 동안 Item * 유형의 유효한 인스턴스를 올바르게 반환하는 방법에 대한 명확한 설명을 찾지 못했습니다. 즉, 동일한 반환 값을 얻지 만 항목을 할당 취소 할 수있는이 코드의 더 나은 대안은 무엇입니까?
Item* Inventory::add(const string& name)
{
Item* item = new Item(name);
...(some other code here)...
return item;
}
고마워요!
'std :: unique_ptr- '은 어떻습니까? –
이것이 왜 문제인지 이해할 수 없습니다. _item_에 대한 포인터의 유일한 복사본을 클라이언트에 반환했습니다. 이제 할당을 해제하는 것이 클라이언트의 작업입니다. 그 사실을 계약/문서/주석에 명시 적으로 나타내십시오. – DaoWen