我的工程里有两个对话框,分别是主对话框CDlg和从对话框CSubDlg,在主对话框里通过点击一个按钮弹出从对话框。我在CDlg.h中的private里定义了:CList<CCai,CCai&> m_lst1; 其中CCai是我已经定义了的一个结构体,里面包括了几个变量,然后我就在CDlg.cpp里对m_lst1进行了一些操作;接着我又在CSubDlg.h中的private里定义了:CList<CCai,CCai&> m_lst2;然后在CSubDlg.cpp里对m_lst2进行操作。编译工程没有出现错误。但是在运行程序的时候,当我想点击主对话框里的按钮弹出从对话框的时候,系统弹出了一个错误提示:“0x00401a26”指令引用的“0x00000008”内存。该内存不能为“read”。
请问各位高手这是怎么回事?是哪里出现了问题?非常感谢!
请问各位高手这是怎么回事?是哪里出现了问题?非常感谢!
解决方案 »
- 请教为什么InvalidateRect()只能让目标区域的一部分无效?
- VC对话框与子控件的Invalidate化的先后顺序
- 有什么办法能让主线程新建子线程后,等待子线程完成后再继续运行?而且不让界面死掉?
- CPropertySheet类里标签页上面的文本怎么才能竖着显示,请高手指教
- 十分简单的问题!!!!!
- 请教:如何用VB的客户程序远程调用组件服务器
- 会delphi的朋友请进:关于调用vc组件含safearray参数的方法,帮忙up也一定送分!
- 如何做报表,请大虾们多指教!
- 一个socket端口扫描的例子,有BUG,不妨进来挑一挑
- 有没有智能控制CPU频率的软件,在CPU使用低的情况下降低频率达到降低功耗,减小热量的目的!自己想做这方面的软件,不知道从何入手.
- 我显示的BMP文件为什么是图片大小的黑块?会的就帮一下吧!
- CSpinButtonCtrl响应方法
private:
CList<CCai,CCai&> m_lst2;CSubDlg.cpp里对m_lst2进行的操作部分:
...
CCai data;
CFile File;
DWORD dwRead;
ZeroMemory(&data,sizeof(data));
if (File.Open(FILEPATH,CFile::modeRead | CFile::typeText))
{
File.SeekToBegin();
do
{
dwRead = File.Read(&data,sizeof(data));
if (dwRead != 0 )
{
m_lst2.AddTail(data); //将文件里的数据排成队列
}
}while(dwRead > 0);
//关闭数据文件
File.Close();
}
else //没有文件
{
AfxMessageBox(_T("没有文件!"));
return FALSE;
}
int n = m_lst2.GetCount();
for(int i=0; i<n; i++);
{
POSITION pos = m_lst2.FindIndex(i);
data = m_lst2.GetAt(pos);
if(m_combocaixi.FindStringExact(-1,data.caixi) == CB_ERR)
{
m_combocaixi.AddString(data.caixi);
}
//m_comboleibie.AddString(data.leibie);
//m_combozuofa.AddString(data.zuofa);
}
...
happyparrot,怎么在DEBUG下,从堆栈中查出哪一条引起崩溃啊?不好意思,我是新手!:(
看一下你的CCai是怎么定义的,如果里面不都是基本数据类型通常是不能执行清0操作的,可以在构造函数中对数据成员赋值。把ZeroMemory(&data,sizeof(data))这行代码删除掉试试。另外调试一下程序,标出执行到哪行出错。
如果你这个CCai类型里面包含复杂类型(类、指针等),这样初始化是错误的。应该用该类自己提供的初始化函数或者在构造时初始化。