我写了一个处理数据的类,先在对话框里定义其指针,然后分配空间,最后执行其检索功能。
调试的时候一切正常可以计算出来数据,直到关闭程序的时候,系统告诉我“User breakpoint called from code xxx”,而CallStack显示的信息为:
NTDLL!XXX
NTDLL!XXX
NTDLL!XXX
KERNEL32!XXX
MSVCRTD!XXX
MSVCRTD!XXX
WinMainCRTStartup!XXX
KERNEL32!XXX
执行的时候则系统直接提示出错!
请指教!!!

解决方案 »

  1.   

    可能是释放一个无效指针所指向的内存出错。
    如 :
    char *szTemp = new char[1024];
    ....
    char szDump[16] = {0};
    &szTemp = szDump;
    ...delete[] szTemp;
    正好我刚才碰到的问题。呵呵 。
      

  2.   

    找到了错误的根源——我在数据处理类中定义了一个所谓的“二维数组”:
    vector<vector<double>*> m_vvChangeRate;
    然后初始化:
    nDimension = ...;
    m_vvChangeRate.resize(nDimension, NULL);
    for(int i = 0; i < nDimension; i++)
    {
    vector<double>* pVec = new vector<double>;
    pVec->resize(i + 1, 0.0);
    m_vvChangeRate[i] = pVec;
    }
    我的本意是想它用来存储一个下三角矩阵。由于其维数是动态的,所以不可以用array。可是我这又有什么错误呢?
    请指正!!!
      

  3.   

    最后在析构函数中释放内存:
    for(int i = 0; i < m_vvChangeRate.size(); i++)
    {
    delete m_vvChangeRate[i];
    }
    需要说明的是:我没有在客户端代码中使用而仅仅定义、分配内存和释放内存系统也照样出错!
    救我!!!