zajer
zajer

Reputation: 803

Scope of variables in Qt vs vanilla c++

Disclaimer: I am total newbie to Qt.

Let's assume we have a byte array returned from a function innerFunc that is later used in another function outerFunc.

QByteArray innerFunc(){
 QProcess ls;
 ls.start("ls", QStringList() << "-1");
 return ls.readAll();
}
void outerFunc(){
 QByteArray gotcha = innerFunc();
 .
 .
 .
}

In vanilla c++ I would expect readAll function to return a pointer that needs to be deleted later. In Qt this function returns an instance of the QByteArray class so I guess it shouldn't be accessed outside of the innerFunc's scope.

If so, how should I properly transfer the data to an outer function? Should it copied to QByteArray *tmp = new QByteArray or is it unnecessary?

Upvotes: 0

Views: 74

Answers (1)

David Grayson
David Grayson

Reputation: 87486

The code you have looks fine. QByteArray is like std::vector<uint8_t> or std::string and not like a pointer. It manages its own memory. It's fine to return it from a function or pass it to a function by value. The compiler will take care of copying and/or moving the data from one object to another as appropriate, using the contructors/operators defined by the QByteArray class.

Upvotes: 5

Related Questions