【发布时间】:2014-11-27 09:17:09
【问题描述】:
我在我的程序中创建了一个 STXXL 优先级队列。 如果我不再需要PQ,如何删除它?就像 C++ 中的 delete[] 缓冲区一样。 我想释放它使用的内存。
我查看了their examples and description,但找不到路。 一旦创建了PQ,内存会一直被这个PQ占用到程序结束吗?
例如,如果我定义了两个优先级队列:Q1 和 Q2。
typedef stxxl::PRIORITY_QUEUE_GENERATOR <
SufNode<unsigned char>,
ComparatorGreater<unsigned char>,
mem*1024*1024, 1024*1024
>::result pqueue_type0;
pqueue_type0 Q1(pool1);
然后我对 Q1 做一些事情,然后删除它,这样我就可以为 Q2 分配更多内存。
typedef stxxl::PRIORITY_QUEUE_GENERATOR<
SufNode<unsigned char>,
ComparatorGreater2<unsigned char>,
mem*1024*1024, 1024*1024
>::result pqueue_type20;
pqueue_type20 Q2(pool2);
【问题讨论】:
-
它似乎像人们在 C++ 中所期望的那样工作,即当对象被销毁时释放内存。你有任何迹象表明它没有?
-
由于某些原因,我需要在我的程序中定义8个pqs,当PQ占用的总内存超过我的电脑内存(即4G,ubuntu)时,它运行缓慢,所以我想删除一些不再需要的 pq。
-
@Charlie:这正是 STXXL 所期望的。除了内存之外,它还使用您的磁盘,但内存要慢得多。
标签: c++ priority-queue stxxl