追踪指针发现部分析构函数中的代码没有执行到,程序就直接报错了,仔细的查找后发现错误是由于delete了一个已经在这之前delete过的指针对象而导致的
当时的代码是这样的:
构造函数中:
m_pLastPageInfo = new PageInfo;//因为在程序中直接指向已存在的PageInfo数组中的某一员,所以析构函数中不需要delete这两个指针
m_pCurrentPageInfo = new PageInfo;
for(int i = 0;i < MAX_PAGE;i++)
m_pPageInfo[i] = new PageInfo;
析构函数中:
delete m_pCurrentPageInfo;//在这里加断点却没有到这里,
delete m_pLastPageInfo;
for (int i = 0; i < MAX_PAGE; i++)
{
delete m_pPageInfo[i];
}
因此在for循环中执行到某个位置时时必然会出错(但是断点却不会执行到这里来就直接报错,不知道为什么)
解决办法:
注释掉delete m_pCurrentPageInfo;和delete m_pLastPageInfo;两行就可以了