Я создаю программу на C++, которая будет работать как служба (под Linux), и я использую Qt из-за множества удобных методов. Я использую QList для отслеживания элементов, которые будут добавляться и удаляться из qlist в течение многих месяцев. (С потенциально сотнями добавлений/удалений в день).
Основываясь на моем недавнем чтении, кажется, что QList никогда не уменьшается - они только растут с точки зрения использования памяти (пока весь QList не будет освобожден). Делает ли это QList непригодным для использования в приложении, которое работает бесконечно?
Придется ли мне вместо этого создавать собственный связанный список? Или есть способ «сжать»/очистить память, используемую в QList?
Обновление: исходя из приведенных ниже отзывов, QLinkedList предпочтительнее? (Освобождает ли он сразу память, когда член списка "стирается")
T*[]
(массив указателей на T) для хранения данных, так что не все так плохо - person ratchet freak   schedule 27.01.2014QList
и определили его как нечто, о чем вам нужно беспокоиться, или это просто программирование карго-культа? На платформе с 64-битными указателями, как правило,QList
имеет около 1 КБ служебных данных на 100 больших элементов (больше 8 байт). Эти накладные расходы масштабируются с максимальным количеством элементов, одновременно хранимых в списке. Так, например, если вы храните в списке не более 1000 элементов, накладные расходы никогда не превысят 10 КБ. Я думаю, что беспокоиться об этом - пустая трата времени. Если вы утверждаете обратное, поделитесь с нами своими измерениями и результатами. - person Kuba hasn't forgotten Monica   schedule 28.01.2014