我正在创建一个将作为服务运行的C ++程序(在linux下),我正在使用Qt,因为有许多方便的方法。我正在使用QList跟踪将在几个月内添加和删除qlist的项目。 (每天可能有数百次添加/删除)。
根据我最近的阅读,看起来QList永远不会缩小 - 它们只会在内存使用方面增长(直到整个QList被解除分配)。这是否使QList不适合在无限期运行的应用程序中使用?
我是否必须创建自己的链接列表?或者有没有办法“缩小”/清理QList中使用的内存?
更新:根据以下反馈,QLinkedList更可取吗? (当列表成员被“擦除”时,它是否会立即释放内存)
答案 0 :(得分:4)
Qt拥有自己的QVector和QLinkedList
QVector具有squeeze
功能,可在需要时释放未使用的内存
答案 1 :(得分:2)
什么是“阅读”,让您了解QList
?如果它永远不会释放未使用的内存,那么它本质上就是在泄漏内存,而事实并非如此。
QList
在内部实现为指针向量。当对象足够小以适应与指针相同的字节数时,该列表等同于QVector
。内部向量可能不会收缩,但这在实践中无关紧要。每个元素只有4或8个字节,并且它受列表中存在的项目总数的限制。它很可能是红鲱鱼。