Russian Qt Forum

Qt => Вопросы новичков => Тема начата: YvenTitan от Апрель 24, 2023, 16:33



Название: Память, занимаемая после вызова QDir::entryList
Отправлено: YvenTitan от Апрель 24, 2023, 16:33
Здравствуйте
Необходимо получить список имен файлов из папки. В этой директории может находиться много файлов (условно 100 000). Если я делаю так:
Код:
QDir dir("D:\\Folder");
QStringList list = dir.entryList();
Потом смотрю в диспетчере задач сколько памяти занимает приложение, то получается в 3 раза больше (на 5000 файлов 4.1 Мегабайт), чем если делаю так:
Код:
QStringList list;
    for(int i = 0; i < 5000; i++)
        list.push_back("file123456789");
(в этом случае приложение занимает 1.7 мегабайт)

Может кто-нибудь знает, что можно сделать, чтобы освобождалась память после вызова QDir::entryList?


Название: Re: Память, занимаемая после вызова QDir::entryList
Отправлено: YvenTitan от Апрель 24, 2023, 17:21
Сделаю через QDirIterator
Код:
QDirIterator it("D:\\FolderSend");
    QStringList list;
    while(it.hasNext())
        list.push_back(it.next());
Но метод не очень красивый


Название: Re: Память, занимаемая после вызова QDir::entryList
Отправлено: qate от Апрель 30, 2023, 19:45
не проверял, но может так:
Код:
QStringList list; { QDir dir("D:\\Folder"); list = dir.entryList(); }