我在主对话框里创建一个堆,不同对话框间调用这个堆指针进行操作。
但是程序运行出现内存访问异常。代码如下:
//fistdlg.h
class CFirstDlg : public CDialog
{
public:
CFirstApp();
char *ptr;//堆指针
。。
}
//firstdlg.cpp
BOOL CFirstDlg::OnInitDialog()
{
CDialog::OnInitDialog();
.............................
ptr=new char[10];//创建堆
ptr="1234567890";
}
//seconddlg.cpp
OnButton1()
{
Cfirstdlg dlg;
AfxMessageBox(dlg.ptr);//运行出错
怎么解决啊?还望高手指点.谢谢。
但是程序运行出现内存访问异常。代码如下:
//fistdlg.h
class CFirstDlg : public CDialog
{
public:
CFirstApp();
char *ptr;//堆指针
。。
}
//firstdlg.cpp
BOOL CFirstDlg::OnInitDialog()
{
CDialog::OnInitDialog();
.............................
ptr=new char[10];//创建堆
ptr="1234567890";
}
//seconddlg.cpp
OnButton1()
{
Cfirstdlg dlg;
AfxMessageBox(dlg.ptr);//运行出错
怎么解决啊?还望高手指点.谢谢。
fxMessageBox(dlg.ptr);//运行出错
OnInitDialog()还没有调用呢
在
Cfirstdlg()
{里面做
ptr=new char[10];//创建堆
ptr="1234567890";
}
ptr=new char[10];//创建堆
ptr="1234567890";
不对.改成:ptr = new char[11];
strcpy(ptr,"1234567890");
AfxMessageBox(dlg.ptr);//运行出错//方法1
cfirstdlg dlg;
dlg.Domodal();//这样才经过初始化InitDialog
AfxMessageBox(dlg.ptr);//方法2(在initDialog中删除分配内存和赋值语句)
cfirstdlg dlg;
dlg.prt = "1234567890"//没有必要分配内存(如果一定要分配也可以)。
AfxMessageBox(dlg.ptr);