Russian Qt Forum
Ноябрь 24, 2024, 13:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Память, занимаемая после вызова QDir::entryList  (Прочитано 2015 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Апрель 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?
Записан
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #1 : Апрель 24, 2023, 17:21 »

Сделаю через QDirIterator
Код:
QDirIterator it("D:\\FolderSend");
    QStringList list;
    while(it.hasNext())
        list.push_back(it.next());
Но метод не очень красивый
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #2 : Апрель 30, 2023, 19:45 »

не проверял, но может так:
Код:
QStringList list; { QDir dir("D:\\Folder"); list = dir.entryList(); }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 22.