类的数据结构

class test
{
private:
    int a[10];
    int b[10];    
};

在实际项目中使用上面类似数据排列时,数组a中数据老是会莫名改变,在每个对a有操作的地方打断点,就没发现过会运行改变功能,跟了好久这个问题,最后试过把a改const,这样a中数据不会串了,但是还是想知道是哪儿导致它数据改变的。

于是猜测可能是地址上引用发生改变,看看到b离a近又隐约记着书上写着类中声明数据地址是连续的,就大胆猜测是对b的操作导致a数据串掉,现在就同样方法用在了b上,果然给发现了问题,有条语句执行是下面这样

b[-1] = ..

运行到这里就明白了问题所在,这是老生常谈的数组越界,这种还特隐蔽,写了这么久代码,发生在越界这个问题上不是一次两次了,相信以后还会遇到同样问题,只能说写代码的时候注意判断界限吧!

 

posted on 2015-04-27 21:19  unreall  阅读(110)  评论(0编辑  收藏  举报

导航