1、我在头文件中定义一个int *变量
int *m_pQPos;
2、然后在构造函数中给它赋值
CMeasureDlg::CMeasureDlg(CWnd* pParent /*=NULL*/)
{
m_pQPos = NULL;
}
3、我自定义了一个初始化函数,
void CMeasureDlg::InitialNewQST()
{
if(m_pQPos!=NULL)
{
delete[] m_pQPos;
m_pQPos=NULL;
}
m_pQPos = new int[1000];
}
4、void CMeasureDlg::OnDestroy()
{
if(m_pQPos!=NULL)
delete[] m_pQPos;
CDialogBar::OnDestroy();
}
5、使用m_pQPos 之前,我都调用InitialNewQST()函数,但是我发现第一次调用时没有问题,因为m_pQPos还没有给赋值,但是第二次调用时,m_pQPos已经保存了一些数据,这时调用InitialNewQST()函数,出错,请高手指点!
int *m_pQPos;
2、然后在构造函数中给它赋值
CMeasureDlg::CMeasureDlg(CWnd* pParent /*=NULL*/)
{
m_pQPos = NULL;
}
3、我自定义了一个初始化函数,
void CMeasureDlg::InitialNewQST()
{
if(m_pQPos!=NULL)
{
delete[] m_pQPos;
m_pQPos=NULL;
}
m_pQPos = new int[1000];
}
4、void CMeasureDlg::OnDestroy()
{
if(m_pQPos!=NULL)
delete[] m_pQPos;
CDialogBar::OnDestroy();
}
5、使用m_pQPos 之前,我都调用InitialNewQST()函数,但是我发现第一次调用时没有问题,因为m_pQPos还没有给赋值,但是第二次调用时,m_pQPos已经保存了一些数据,这时调用InitialNewQST()函数,出错,请高手指点!
解决方案 »
- 向记事本中写数据,跳出“内存不足”
- VC++加入了#include "stdafx.h "就出现了这个错误。为什么?
- 各位大侠,我想做一个支持flv的FLASH播放器,请问要怎么下手,VC控件可以用吗 (MFC),
- 线程中 Edit Box显示数字菜鸟问题,请指教!谢谢
- int* &a;是什么语句啊?不懂意思,请指教!
- 有没有办法在windows用户登录之前启动一个普通的exe(不需要注册成服务的形式)?我想到使用任务计划,但还没试过。各位还有什么高招??
- 在给定目录及其子目录内搜索指定文件,应如何做到
- 我如何才能把一个类的变量付给另外一个类。
- 如何读取静态库中的资源文件?
- 模拟键盘输入2
- CListCtrl 偶尔出现乱码
- MFC中combo box的与消息问题
另外还有一个地方要改:void CMeasureDlg::OnDestroy()
{
if(m_pQPos!=NULL)
delete[] m_pQPos;
m_pQPos = NULL; // <--------- 加上这一句
CDialogBar::OnDestroy();
}
m_pQPos[1000]=44;
void CMeasureDlg::InitialNewQST()
{
if(m_pQPos!=NULL)
{
delete []m_pQPos; //改了一下
m_pQPos=NULL;
}
m_pQPos = new int[1000];
} 代码应该没有问题,肯定是对其操作的问题了。
{
delete[] m_pQPos;
m_pQPos=NULL;
} 这段代码是否有问题。
建议你在其它地方访问m_pQPos的地方,都注释掉,专门连续调两次 InitialNewQST() 看看,肯定没有问题!这样,就可以断定,这个函数是没有问题的,是你其它地方访问数组造成的!
将其余调用init的地方去掉
跟踪看看是不是有数组越界操作了
这样当到了InitialNewQST() 函数中,仍然会进入下面的if语句中
if(m_pQPos!=NULL)
{
delete []m_pQPos; //改了一下
m_pQPos=NULL;
} 结果就出错了,大家看是不是这个理由?