LINUX.ORG.RU

Не понимаю C++: почему здесь не течет память?


0

4

Вот кусок исходника 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 должны стать невалидными, за них никто не поручится. Почему тогда возвращается указатель на данные, которые должны исчезнуть сразу после обращения?

★★★★★
Ответ на: комментарий от pathfinder

Правильный вопрос. Не понимаю, почему все так возбудились и начали писать негативные комментарии. ТС заметил обычный баг.
Не понимаю, почему все так возбудились и начали писать негативные комментарии.
негативные комментарии

Да потому что эти завсегдатаи ЛОРа: x0r, grouzen, stevejobs, Miguel, KRoN73 любят мнить себя крутейшими экспертами в крестах, линуксах, лиспах и бог весть в чём.

А на деле вышел такой вот публичный обосрамс вышеупомянутых личностей. И хоть бы один из них после своего обосрамса явился сюда и написал, мол «извините, был неправ в своих суждениях». Видимо ЧСВ им мешает быть обычными людьми. Так что не слушайте советов всяких там многозвездочных, а думайте прежде всего своей головой.

Xintrea и Adonai, спасибо за обнаружение и фикс бага.

anonymous
()
Ответ на: комментарий от anonymous

ТС написал бред вне зависимости от того, течёт там память или нет. ТС просто тупо не знает матчасть.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.