CStringArray 问题

wu_wenxian 2009-01-01 07:39:06
用MFC 开发好了一个软件,删除了界面上一些没用的控件。
结果出现问题了,每次关闭程序的时候,debug错误 array_s.cpp 出错
跟踪发现关闭程序是在析构一个地址为XXXXXXXeb8的CStringArray对象时出现错误。
可是我在array_s.cpp中CStringArray的构造函数出也设置了断点,没发现程序构造过地址为XXXXXXXeb8的CStringArray对象。
该怎么解决,谢谢大家。
...全文
486 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu_wenxian 2009-01-03
  • 打赏
  • 举报
回复
最后发现只要在那一行的位置定义一个CDataGrid变量就不会出现错误。
wu_wenxian 2009-01-03
  • 打赏
  • 举报
回复
最后发现是删除一个Datagrid控件才发生这样的调试错误
可是只要在头文件中加一个 CDataGrid m_Datagrid4定义,程序就不会出现问题,把这个变量声明注释掉又会出现问题。
我查找了一下,发现程序中没有任何地方用到m_Datagrid4啊。疑惑,难道配注释掉这个变量声明就会出现堆栈益处吗?
wu_wenxian 2009-01-03
  • 打赏
  • 举报
回复
// QYMISDlg.h : header file
//
//{{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 dialog

class 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_)
wu_wenxian 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangyt 的回复:]
build clean, rebuild试试
[/Quote]

非常感谢,clean后,重新build就ok了。
一名程序员 2009-01-03
  • 打赏
  • 举报
回复
build clean, rebuild试试
Show_Mike 2009-01-02
  • 打赏
  • 举报
回复
错误可能性很多,如上面所说都有可能.如果代码不长,不妨贴出,大家一看就明白了.
jixingzhong 2009-01-02
  • 打赏
  • 举报
回复
>>删除了界面上一些没用的控件

如果在删除之前是正常的,那么可以检查一下和这些控件相关的一些操作
比如是否有数据的读写等等
wutaihua 2009-01-01
  • 打赏
  • 举报
回复
我觉得是你破坏了堆栈,导致了这个地方的错误,你看看你的程序中有没有堆栈溢出的情况啊?查查
bianliu1013 2009-01-01
  • 打赏
  • 举报
回复
检查变量是否析构了多次,delete之后没有 赋NULL 之类的;
oyljerry 2009-01-01
  • 打赏
  • 举报
回复
检查你自己的所有的CStringArray相关的变量,以及查看call stack,出错的过程

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧