QIODevice (예 : QFile)를 생성하고 QIODevice에서 생성 된 QDataStream에 대한 포인터를 반환하는 함수가 있다고 가정 해 보겠습니다. 여기에 메모리 할당을 처리하는 가장 좋은 방법은 무엇입니까? 확실히 QIODevice는 함수 종료시 QDataStream에서 사용 가능하도록 유지하기 위해 힙을 할당해야하지만, QDataStream을 삭제해도 장치가 삭제되거나 닫히지 않습니다. 이 겉보기 공통적 인 문제를 다루는 표준 방법이 있습니까? 이상적으로 QDataStream과 같이 작동하지만 파괴시 장치를 닫는 개체 (개체에 대한 포인터가 아님)를 반환하는 함수가 필요합니다. 효과적으로 표준 라이브러리 입력 스트림.QDataStream QIODevice 메모리 할당
예제 코드 :
QDataStream* getStream(const QString& filename) {
QFile* file = new QFile(filename); // needs to be explicitly deleted later
file->open(QIODevice::ReadOnly);
QDataStream* out = new QDataStream(&file); // same here
return out;
}
QSharedPointer (QScopedPointer를 복사 할 수 없음)를 의미한다고 생각합니다. –
@RA. 적절하게 수정 된 전화입니다. –
고마워, 내가 원한거야. – Dylan