Как удалить очередь приоритетов STXXL?

Я создал очередь приоритетов STXXL в моей программе.
Если мне больше не нужен PQ, как его удалить? Так же, как удалить буфер [] в C ++.
Я хочу освободить память, используемую им.

Я просмотрела их примеры и описание, но я не могу найти путь.
После создания 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

Решение

Когда Q1 выходит из области видимости, его память будет автоматически освобождена. Так что не ставьте все в одну большую функцию. Поместите Q1 и то, что вы делаете с ним, в одну функцию, а Q2 — в другую функцию.

Самой большой проблемой было бы, если Q1 необходим для создания Q2, а Q2 необходим для создания Q3 и т. Д. В этом случае std::unique_ptr<pqueue_type0> может быть удобно

0

Другие решения


По вопросам рекламы [email protected]