模板函数 <queue> 中的 C++ 内存错误

标签 c++ memory-leaks stl queue

我在运行时收到一条内存错误消息,我是 STL 的新手,所以我不确定是否 我需要以特殊方式处理队列,例如在函数中删除它们等等。

我追踪到这个函数的错误

template <typename T>  
bool contains(std::queue<T> set, T val){
        std::queue<T> hold;
        bool isContained = false;

        if (set.front() == val) isContained = true;
        while(!set.empty()){
                hold.push(set.front());
                set.pop();
                if (set.front() == val) isContained = true;
        }

        while(!hold.empty()){
                set.push(hold.front()); 
                hold.pop();
        }

        return isContained;
}

在我的 main() 中,我为队列成功调用了这个函数 20 次,然后在第一次在队列上调用该函数时,程序在函数的两个循环之间发出“内存故障”消息。

我正在使用 gnu 编译器。

最佳答案

在您第二次调用 set.front() 时,无法保证集合不为空。

关于模板函数 <queue> 中的 C++ 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425484/

相关文章:

c++ - 如何访问属于另一个类的私有(private)成员的类的方法

c++ - Qt5部署 "procedure entry point could not be located"

c++ - 编译器拒绝两个相同的模板特化

c++ - 具有相同散列值的值是否在同一个 std::unordered_map 桶中?

c++ - 如何实现C++代码才能类似于Lua表?

c++ - 在 Mac OSX 中设置 QComboBox 样式

ios - 与CGDataProviderCopyData相关的内存泄漏

c++ - 离开范围时,我的 boost managed_shared_memory 似乎没有从内存空间取消映射

c - 将指针传递给 C 中的递归函数

c++ - OpenMP 和 STL 风格的