当前位置: 代码迷 >> VC/MFC >> 大神麻烦看看VS2008 编译成功,运行奔溃的有关问题。
  详细解决方案

大神麻烦看看VS2008 编译成功,运行奔溃的有关问题。

热度:131   发布时间:2016-05-02 03:49:00.0
大神麻烦看看VS2008 编译成功,运行奔溃的问题。!
VC6的代码,在VS2008中编译(因为要编译64的,以下问题是编译32,64都存在,而拿VC6直接编译64位一样有问题)

环境,XP,vs2008,编译32位的DLL
可以执行,但是当输入密码。点击确定的时候。程序报错。

应用程序发生异常 未知的软件异常 (0xc0000409),位置为 0x00ae1cdc。

代码如下,当删掉strcpy(MDResult,MDString(Input));后,不再报错。但是输入密码都是错误的。


void CMyUI::OnBUTTONEnter() 
{
// TODO: Add your control notification handler code here

GetDlgItemText(IDC_EDIT1,Input,256);
strcpy(MDResult,MDString(Input)); //删掉这句以后。就正常不出错了。
if( !strcmp(MDResult,g_Pass) )
{
MessageBox("OK.","",0);
SetDlgItemText(IDC_EDIT1,"");
CDlgTools MyDlgTools;
MyDlgTools.DoModal();
}
else
{
// MessageBox("Wrong.","",0);
SetDlgItemText(IDC_EDIT1,"");
}

}


------解决思路----------------------
字符串复制,是否越界。
------解决思路----------------------
GetDlgItemText(IDC_EDIT1,Input,256);

返回的字串可能没有包含结束字符,必须代码添加

int l=GetDlgItemText(IDC_EDIT1,Input,256);
Input[l]=0;


------解决思路----------------------
检查是否越界,同时建议使用更安全的strcpy_s
------解决思路----------------------
MDString是不是进行MD5加密相关的函数?

你还是debug模式下单步调试看看具体情况吧
------解决思路----------------------
strcpy需要提供内存。
  相关解决方案