一个困扰很久的问题:Debug与Release版的差异?(请问这些代码会有问题吗?)

来源:百度知道 编辑:UC知道 时间:2024/06/16 05:46:26
char srcchar[256];
char tarchar[256];
memset(srcchar,0,sizeof(srcchar));
memset(tarchar,0,sizeof(tarchar));
CFile file("config.dat",CFile::modeRead);
file.Read(srcchar,sizeof(srcchar));
unsigned long* enfile=(unsigned long*)srcchar;
unsigned long* defile=(unsigned long*)tarchar;
CString validate="www.macpower.com";
int a=0;
CString temp,str;
while(*enfile!=0)
{
BlowfishDe(enfile,defile);
enfile++;
defile++;
}
char* pfile=tarchar;
while(*pfile!=NULL)
{

if(*pfile=='\r')
{

if(a<7)
{
pmyListCtrl->SetItemText(a,1,str);
pfile+=2;
compare[a]=str;
a++;
str.Empty();
continue;
}
}
temp.Format("%c",*pfile);
str+=temp;
pfile++;

release经过的代码优化.
你可以在项目编译的配置里关掉一些的优化选项试试看.

Debug:编译的时候会插入调试信息,方便程序被调试。
Release:最终的发布编译方式,会去掉程序中的调试信息。
对程序运行基本没有什么影响,但是也有区别。
Debug会在系统中定义一个DEBUG的宏
VC的很多函数库会根据宏的定义不同而被预编译出不同行为。
如:ASSERT在存在DEBUG宏的时候,对里面的参诉进行判断
但是如果不存在DEBUG宏的时候,会被映射成空语句。
另外VC在Debug模式会重载new和delete操作符,用于跟踪内存泄露。
所以说你的代码的执行结果基本不被影响。

不太清楚你这个函数
while(*enfile!=0)
{
BlowfishDe(enfile,defile);
enfile++;
defile++;
}
中做什么,感觉这地方会有问题,你是对字符解密吗?如果是的话,这地方应会是不正确的。

请说明错误提示