我的一点小问题~~~ 我做了个课程设计,用debug编译出来可以运行,也没有问题。但是用release出来的就有问题了,编译连接都没错,也可以运行,但是算法实现的功能不对了~~~得到的结果出问题了,我的程序有2段算法,但这个问题只出在一个算法上,这是什么原因呢?VC没有设置好?版本问题?还是我那段算法有BUG?请大家帮帮我!顺便问个小问题~~在资源里做界面的时候,静态文本框里的字怎么设置大小? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这样跟没说一样……贴点东西出来啊会不会是你在ASSERT里面做了些很重要的事情或new的内存空间没有初始化阿 >在资源里做界面的时候,静态文本框里的字怎么设置大小?dlg中设置字体,或者代码中SetFont 《C++语言的设计和演化》中提到release和debug的一个区别就是会去掉对某些类型的安全检查。你可以从这个方面去检查一下。此外数组越界和指针也是容易出问题的地方 哦~~谢谢大家~~很奇怪呀,我到学校机房却没问题。release 结果也正常了,到寝室就不行~~~郁闷了!出问题的代码是这里~~~//编码部分 UpdateData(TRUE); int i=0,p=0,l=0; int num = strlen(m_edit1); //输入的数据的长度 char buffer[256],buffer1[256],buffer2[256]; memset(buffer,0,256); memset(buffer1,0,256); memset(buffer2,0,256); strcpy(buffer,m_edit1);//算法 超过9位重复的就重新计算,这样能解决解码的问题while(p<num){ i=1; //i为重复的个数 //优化错误 if( buffer[p]!='0' && buffer[p]!='1') { strcpy(buffer2,"你输入的数据不正确!"); break; } //得到重复的次数 while( buffer[p]==buffer[++p] && i<=num ) { if(i>=9) break; i++; } if( i<4 ) { for(int m=0; m<i; m++ ) { buffer2[l] = buffer[p-1]; l++; } } //4次以下的按原值输出 else { sprintf(buffer1,"%d%c",i,buffer[p-1]); for(int k=0; k<(int)strlen(buffer1); k++) { buffer2[l] = buffer1[k]; l++; } } //4次以上包括4次的就编码} //end while m_in = buffer2; m_edit2 = buffer2;UpdateData(FALSE);release 出来的程序编码的结果不对了~~~很奇怪呢。输入2个1什么都不出来,3个1出来4,4个1出来5..... 疑惑: WIN 控件 ListBox是如何跨进程访问内存的?? 散分,简单的VB转VC 如何在一个新建的类对对话框类的控件进行操作 我作成activex dll,如何导出头文件? VC怎么样实现DOS命令行?? 拿分拿到你手软,快速结帖!vc的设置问题 再问一个:如何获取所有的图片地址,包括table中的背景图片? 读过《深入浅出MFC》的进来 有深圳的同行吗?谁知道深圳的英语四级在哪儿报考吗? 为什么我的CString的一个对象不能连续的加入字串? 高手请入:为什么动态链接库可以静态调用而不能动态调用 求一个用 CcomboBoxEx 从磁盘载入若干图标添加到下拉列表中的例子~~~
贴点东西出来啊会不会是你在ASSERT里面做了些很重要的事情或new的内存空间没有初始化阿
此外数组越界和指针也是容易出问题的地方
出问题的代码是这里~~~
//编码部分
UpdateData(TRUE);
int i=0,p=0,l=0;
int num = strlen(m_edit1); //输入的数据的长度
char buffer[256],buffer1[256],buffer2[256];
memset(buffer,0,256);
memset(buffer1,0,256);
memset(buffer2,0,256);
strcpy(buffer,m_edit1);
//算法 超过9位重复的就重新计算,这样能解决解码的问题while(p<num)
{
i=1; //i为重复的个数 //优化错误
if( buffer[p]!='0' && buffer[p]!='1')
{
strcpy(buffer2,"你输入的数据不正确!");
break;
} //得到重复的次数
while( buffer[p]==buffer[++p] && i<=num )
{
if(i>=9)
break;
i++;
} if( i<4 )
{
for(int m=0; m<i; m++ )
{
buffer2[l] = buffer[p-1];
l++;
}
} //4次以下的按原值输出
else
{
sprintf(buffer1,"%d%c",i,buffer[p-1]);
for(int k=0; k<(int)strlen(buffer1); k++)
{
buffer2[l] = buffer1[k];
l++;
}
} //4次以上包括4次的就编码
} //end while
m_in = buffer2;
m_edit2 = buffer2;
UpdateData(FALSE);release 出来的程序编码的结果不对了~~~很奇怪呢。
输入2个1什么都不出来,3个1出来4,4个1出来5.....