我正在使用C ++优先级队列,每次迭代发生时我都必须清除优先级队列。由于没有为优先级队列定义明确的功能,我尝试了类似这样的方法
priority_queue <int> fpq;
while(condition)
{
//Resetting fpq for each iteration
fpq=priority_queue<int>(); //Possible memory leak
//modified fpq
}
其中fpq是一个现有对象,我使用它的构造函数放入一个新的优先级队列(它是空的)。我的问题是,它会导致内存泄漏,因为在此行代码之前分配给fpq之前的内存未明确释放。或者这是照顾吗?
答案 0 :(得分:0)
priority_queue析构函数和/或复制构造函数负责在复制新(空)priority_queue之前释放未使用的内存,因此您编写的代码中没有泄漏。
对于所有标准容器对象都是如此,因此您可以安全地使用它们而不必担心内存泄漏。