invalid null pointer是咋回事,看了好久沒看出錯誤。
MyQueue.cpp
#include?"MyQueue.h" #include<iostream> using?namespace?std; MyQueue::MyQueue(int?queueCapacity) { m_iQueueCapacity?=?queueCapacity; //當前代碼可以調用ClearQueue() m_iHead?=?0; //初始化隊頭 m_iTail?=?0; //初始化隊尾 m_iQueueLen?=?0; //一開始元素0個 //默認構造函數要參數要賦初值 m_pQueue?=?new?Customer[m_iQueueCapacity]; } MyQueue::~MyQueue() { delete[]?m_pQueue; m_pQueue?=?NULL; } void?MyQueue::ClearQueue() { //清空,但內存不處理 m_iHead?=?0; m_iTail?=?0; m_iQueueLen?=?0; } bool?MyQueue::QueueEmpty()?const { if?(m_iQueueLen?==?0)? return?true; else return?false; //return?m_iQueueLen?==?0???true?:?false; } bool?MyQueue::QueueFull()?const { if?(m_iQueueLen?==?m_iQueueCapacity) return?true; else return?false; } int?MyQueue::QueueLength()?const { return?m_iQueueLen; } bool?MyQueue::EnQueue(Customer?element) { //判滿 if?(QueueFull()) return?false; m_pQueue[m_iTail]?=?element; m_iTail++; //循環 m_iTail?=?m_iTail?%?m_iQueueCapacity; m_iQueueLen++; return?true; } bool?MyQueue::DeQueue(Customer?&element) { if?(QueueEmpty()) return?false; element?=??m_pQueue[m_iHead]; m_iHead++; //循環 m_iHead?=?m_iHead?%?m_iQueueCapacity; m_iQueueLen--; return?true; } void?MyQueue::QueueTraverse() { //m_iHead?=?3時,m_iTale?=?1時,通過以下可以順利 //打印出m_pQueue[3],m_pQueue[0]的值 for?(int?i?=?m_iHead;?i?<?(m_iHead?+?m_iQueueLen);?i++)?{ m_pQueue[i?%?m_iQueueCapacity].printInfo(); } }
demo.cpp
#include<iostream> #include<stdlib.h> #include?"MyQueue.h" using?namespace?std; /******************************************* 環形隊列的C++代碼檢測 *******************************************/ int?main(void) { MyQueue?*p?=?new?MyQueue(4); Customer?c1("vortesnail",?21); Customer?c2("hello",?22); Customer?c3("world",?23); p->EnQueue(c1); p->EnQueue(c2); p->EnQueue(c3); p->QueueTraverse(); delete?p; p?=?NULL; system("pause"); return?0; }
其他地方仔細看過了 沒錯,感覺出問題的應該在MyQueue里面,但是怎么也找不出錯誤。。
2017-12-22
加個大括號
2016-11-06
錯誤截圖: