24小时热门版块排行榜    

查看: 1005  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wangww2011

木虫 (著名写手)


[交流] 今天碰到的一个bug

今天根据一个同学的要求把以前的一个代码修改了一下就发过去了,后来自己拿这个代码去算另一位同学发来的文件,发现提示内存不足,遂把体系改小,依旧报错,在想是不是今天把代码改坏了,又检查了一下代码,其实今天只是加了一个函数,原来的都没有动,我也就是用if语句判断了下,后来发现问题就出在这里了,到现在还是不知道为什么。我重新写了个文件,并没有发现问题。
CODE:
#include
using namespace std;

class TestBug {
private:
    mutable int x;
public:
    void print() const;
};

void TestBug::print() const {
    x = -1;
    int y=x;
    if (x > 0) {
        cout << "x=" << x << endl;
    }
    if (y > 0) {
        cout << "y=" << y << endl;
    }
}

int main() {
    TestBug tb;
    tb.print();
    return 0;
}

正确的结果是什么都不输出呗(当然上面的代码是没有问题的),但在原代码中bug的结果是
CODE:
x=-1

我只能感叹太复杂的东西真的是会出错的,我重新定义一个本地变量,代码正常了,我很想知道为啥,因为原代码从逻辑上根本没有问题。

[ Last edited by wangww2011 on 2012-5-29 at 02:20 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xl1247644534

铜虫 (小有名气)



wangww2011(金币+1): 谢谢参与
在coldblocks 中用 gcc编译器编译没有问题
9楼2012-06-03 05:47:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

nbjnh

木虫 (正式写手)



wangww2011(金币+1): 谢谢参与
我把楼主那段代码编译、运行了一遍,没有任何问题。我用的是VS2008。
3楼2012-05-29 08:19:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

devymex

捐助贵宾 (初入文坛)



wangww2011(金币+1): 谢谢参与
有可能是别的地方把栈写坏了(过界写入)。建议在int y=x;处设断点单步调试,跟踪x变量的值,看看哪里发生了改变。
4楼2012-05-29 11:12:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangww2011

木虫 (著名写手)


引用回帖:
3楼: Originally posted by nbjnh at 2012-05-29 08:19:26
我把楼主那段代码编译、运行了一遍,没有任何问题。我用的是VS2008。

上面的代码确实没有什么问题的,但是原代码的确会出现问题,而且是第二次运行时出现问题。
5楼2012-05-29 19:55:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见