模板函数<queue> </queue>中的C ++ Memory Fault

时间:2013-03-15 05:36:33

标签: 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编译器。

1 个答案:

答案 0 :(得分:2)

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