用MFC 开发好了一个软件,删除了界面上一些没用的控件。
结果出现问题了,每次关闭程序的时候,debug错误 array_s.cpp 出错
跟踪发现关闭程序是在析构一个地址为XXXXXXXeb8的CStringArray对象时出现错误。
可是我在array_s.cpp中CStringArray的构造函数出也设置了断点,没发现程序构造过地址为XXXXXXXeb8的CStringArray对象。
该怎么解决,谢谢大家。
结果出现问题了,每次关闭程序的时候,debug错误 array_s.cpp 出错
跟踪发现关闭程序是在析构一个地址为XXXXXXXeb8的CStringArray对象时出现错误。
可是我在array_s.cpp中CStringArray的构造函数出也设置了断点,没发现程序构造过地址为XXXXXXXeb8的CStringArray对象。
该怎么解决,谢谢大家。
比如是否有数据的读写等等
//
//{{AFX_INCLUDES()
#include "adodc.h"
#include "datagrid.h"
#include "datalist.h"
//}}AFX_INCLUDES#if !defined(AFX_QYMISDLG_H__D736B9A9_2DB8_415A_8FD8_DA772B95FF19__INCLUDED_)
#define AFX_QYMISDLG_H__D736B9A9_2DB8_415A_8FD8_DA772B95FF19__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////
// CQYMISDlg dialogclass CQYMISDlg : public CDialog
{
// Construction
public:
CString StuId;
CString DepId;
CString ClsId;
CString CoachId;
//IStdDataFormatDispPtr spIStdDataFormatDisp;
CQYMISDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data
//{{AFX_DATA(CQYMISDlg)
enum { IDD = IDD_QYMIS_DIALOG };
CTreeCtrl m_Tree;
CString m_StuName;
CString m_Sex;
CString m_Birth;
CString m_Mobile;
CString m_Phone;
CString m_ClassTime;
CString m_School;
CString m_Item;
CString m_DepName;
CString m_State;
CString m_ClsName;
CString m_CoachName;
CString m_RoomAddr;
CAdodc m_Adodc;
CDataGrid m_Datagrid;
CDataGrid m_Datagrid2;
CAdodc m_Adodc3;
CString m_QueryStr;
//}}AFX_DATA // ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CQYMISDlg)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected:
HICON m_hIcon; // Generated message map functions
//{{AFX_MSG(CQYMISDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSelChangeDatagrid1(short FAR* Cancel);
afx_msg void OnStuAddNew();
afx_msg void OnStuUpdateInfo();
afx_msg void OnStuNotPayed();
afx_msg void OnStuClsMan();
afx_msg void OnStuPayMan();
afx_msg void OnBtnRecCheckin();
afx_msg void OnClsCheckinMan();
afx_msg void OnBtnQuery();
afx_msg void OnStuCheckin();
afx_msg void OnEmpMan();
afx_msg void OnRowColChangeDatagrid(VARIANT FAR* LastRow, short LastCol);
afx_msg void OnClsMan();
DECLARE_EVENTSINK_MAP()
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void Refresh_Tree();
void InitTdyCls();
int iState;
void Refresh_StuInfo();
void Refresh_StuList();
CStringArray a_DepId;
CStringArray a_DepName;
CStringArray a_UpperId;
HTREEITEM m_root;
CImageList m_treeImageList;
void Load_Dep();
void AddtoTree(HTREEITEM m_node, int UpperId);
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_QYMISDLG_H__D736B9A9_2DB8_415A_8FD8_DA772B95FF19__INCLUDED_)
可是只要在头文件中加一个 CDataGrid m_Datagrid4定义,程序就不会出现问题,把这个变量声明注释掉又会出现问题。
我查找了一下,发现程序中没有任何地方用到m_Datagrid4啊。疑惑,难道配注释掉这个变量声明就会出现堆栈益处吗?
非常感谢,clean后,重新build就ok了。