刚好在10分钟的那个位置出错了。 Customer的构造函数: Customer::Customer() { m_strName = ""; m_iAge = 0; } Customer::Customer(string name, int age) { m_strName = name; m_iAge = age; } Dequeue()代码: bool MyQueue::Dequeue(Customer &element) { if(QueueEmpty()) { cout << "Queue is Empty. No more actions needed." << endl; return false; } else { element = m_pQueue[m_iHead]; m_iHead++; m_iHead = m_iHead % m_iQueueCapacity; //回到第一个位置; m_iQueueLen--; return true; } } 然后执行代码: Customer c4("",0); Customer c5; p->Dequeue(c4); //c4, c5都报错。 在执行p->Dequeue(c4)时,不管怎么样都会出现“程序已经停止运行”的那个错误提示框,然后返回值是: Process terminated with status -1073741819 (0 minute(s), 5 second(s))。 但使用c4.printInfo()可以正常获得队列的那个值,后续再遍历也是对的。
感觉整个代码都是完全搬下来的了,哪儿没对?
应该是说改成delete p就对了。
我自己找到原因了,我在后面直接执行了delete []p操作,改用清除队列的方法之后就好了。
c4,c5 入队列了吗?