Я создал очередь приоритетов 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);
Когда Q1 выходит из области видимости, его память будет автоматически освобождена. Так что не ставьте все в одну большую функцию. Поместите Q1 и то, что вы делаете с ним, в одну функцию, а Q2 — в другую функцию.
Самой большой проблемой было бы, если Q1 необходим для создания Q2, а Q2 необходим для создания Q3 и т. Д. В этом случае std::unique_ptr<pqueue_type0>
может быть удобно