mfc 程序,debug版本正常和release版本异常。
下面一段代码:CEdit*pEdit;CStringstrTmp;pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);pEdit->GetWindow...
下面一段代码:
CEdit *pEdit;
CString strTmp;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->GetWindowText(strTmp);
在debug版本下正常运行,但是如果改成release版本的话就会在 pEdit->GetWindowText(strTmp); 报出异常,在这种情况下,如果我将前面的CString strTmp;在声明的时候改成 CString strTmp = “null”;(就是给它赋一个初值,空字符串还不行,一定要有内容)
当我改了以后release版本也可以正常运行了,求大神指点这是声明原因?
我怀疑是编译器设置的原因,但是却不知道如何修改,求指点!!!先拜谢了。。。 展开
CEdit *pEdit;
CString strTmp;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->GetWindowText(strTmp);
在debug版本下正常运行,但是如果改成release版本的话就会在 pEdit->GetWindowText(strTmp); 报出异常,在这种情况下,如果我将前面的CString strTmp;在声明的时候改成 CString strTmp = “null”;(就是给它赋一个初值,空字符串还不行,一定要有内容)
当我改了以后release版本也可以正常运行了,求大神指点这是声明原因?
我怀疑是编译器设置的原因,但是却不知道如何修改,求指点!!!先拜谢了。。。 展开
2个回答
展开全部
追问
您好,您的这种方法我也尝试过,新建一个小的mfc程序,我自己试的时候也是正常的,两种版本都可运行,可是一到我现在项目的那个mfc程序里面就出问题了,我也对照了两个mfc程序里面release版本所做的优化,并且做了相应的修改,可结果还是不行。。。。
真的是个很奇怪的问题。
追答
一般这种情况,多数是其它代码地址越界或者溢出之类的干扰,或者全局、作用域方面的影响,没法直接判断。
可以先注销代码方式,一个一个功能的注销看看,什么时候能正常,然后再集中分析代码问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询