Вот кусок исходника Qt:
QMimeData *QAndroidPlatformClipboard::mimeData(QClipboard::Mode mode)
{
...
QMimeData *mimeData = new QMimeData();
mimeData->setText(QtAndroidClipboard::clipboardText());
return mimeData;
}
Не могу понять следующего: здесь создается объект типа QMimeData, ему выделяется память. Потом с этим объектом что-то делается (setText) и функция возвращает указатель на него.
Вопросы:
1. Почему не течет память? Где delete? Где очищается память, выделенная объекту?
2. Объясните, куда указывает указатель-результат вызова данной функции? Он указывает на созданный в функции объект QMimeData()? Но при выходе из scope это метода, данные объекта QMimeData должны стать невалидными, за них никто не поручится. Почему тогда возвращается указатель на данные, которые должны исчезнуть сразу после обращения?