我在程序中创建了一个STXXL优先级队列。 如果我不再需要PQ,如何删除它?就像在C ++中删除[]缓冲区一样。 我想释放它使用的内存。
我浏览了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);
答案 0 :(得分:0)
当Q1超出范围时,它的内存将自动释放。所以不要把所有东西都放在一个大功能中。把Q1和你用它做的事情放在一个函数中,把Q2放在另一个函数中。
最大的问题是如果需要Q1来创建Q2,那么需要Q2来创建Q3等。在这种情况下,std::unique_ptr<pqueue_type0>
可以很方便。