我做了个课程设计,用debug编译出来可以运行,也没有问题。但是用release出来的就有问题了,编译连接都没错,也可以运行,但是算法实现的功能不对了~~~得到的结果出问题了,我的程序有2段算法,但这个问题只出在一个算法上,这是什么原因呢?VC没有设置好?版本问题?还是我那段算法有BUG?
请大家帮帮我!顺便问个小问题~~在资源里做界面的时候,静态文本框里的字怎么设置大小?

解决方案 »

  1.   

    你这样跟没说一样……
    贴点东西出来啊会不会是你在ASSERT里面做了些很重要的事情或new的内存空间没有初始化阿
      

  2.   

    >在资源里做界面的时候,静态文本框里的字怎么设置大小?dlg中设置字体,或者代码中SetFont
      

  3.   

    《C++语言的设计和演化》中提到release和debug的一个区别就是会去掉对某些类型的安全检查。你可以从这个方面去检查一下。
    此外数组越界和指针也是容易出问题的地方
      

  4.   

    哦~~谢谢大家~~很奇怪呀,我到学校机房却没问题。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.....