类的数据结构

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

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

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

b[-1] = ..

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

 

posted on   unreall  阅读(111)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示