优先级队列中可能存在内存泄漏



我使用C++优先级队列,每次迭代时都必须清除优先级队列。由于没有为优先级队列定义明确的函数,我尝试了一种类似的方法

priority_queue <int> fpq;
while(condition)
{
    //Resetting fpq for each iteration
    fpq=priority_queue<int>();      //Possible memory leak
 //modified fpq
}

其中fpq是一个现有对象,我使用它的构造函数将一个新的优先级队列(为空)放入其中。我的问题是,这是否会导致内存泄漏,因为在这行代码之前分配给fpq的内存没有明确释放。还是已经处理好了?

priority_queue析构函数和/或复制构造函数负责在复制到新的(空的)priority_6queue之前释放未使用的内存,因此您编写的代码中没有泄漏。

所有标准容器对象都是如此,因此您可以安全地使用它们,而不用担心内存泄漏。

最新更新