Qlist适合在服务中使用?

时间:2014-01-27 16:42:55

标签: c++ qt memory qlist

我正在创建一个将作为服务运行的C ++程序(在linux下),我正在使用Qt,因为有许多方便的方法。我正在使用QList跟踪将在几个月内添加和删除qlist的项目。 (每天可能有数百次添加/删除)。

根据我最近的阅读,看起来QList永远不会缩小 - 它们只会在内存使用方面增长(直到整个QList被解除分配)。这是否使QList不适合在无限期运行的应用程序中使用?

我是否必须创建自己的链接列表?或者有没有办法“缩小”/清理QList中使用的内存?


更新:根据以下反馈,QLinkedList更可取吗? (当列表成员被“擦除”时,它是否会立即释放内存)

2 个答案:

答案 0 :(得分:4)

Qt拥有自己的QVector和QLinkedList

QVector具有squeeze功能,可在需要时释放未使用的内存

答案 1 :(得分:2)

什么是“阅读”,让您了解QList?如果它永远不会释放未使用的内存,那么它本质上就是在泄漏内存,而事实并非如此。

QList在内部实现为指针向量。当对象足够小以适应与指针相同的字节数时,该列表等同于QVector。内部向量可能不会收缩,但这在实践中无关紧要。每个元素只有4或8个字节,并且它受列表中存在的项目总数的限制。它很可能是红鲱鱼。