用c++ vector储存指针,迭代时数据消失

我在一个类里加了一个vector容器,然后在这个类的一个成员函数里用for循环迭代,但是代码一运行到for,容器的内容就没了,然后出错,如图
图片说明
图片说明
图片说明
补充:
在任意成员函数里一运行到begin(),size()等vector操作就会这样,在主程序里不会,
我存指针是为了跟踪另一个类的成员变化,
win32程序
代码过长没放,如果需要更多信息请在评论里说下

3个回答

看下你的getdata吧,可能是地址无法访问

xy2017
xy2017 我老是犯这样的错,编译器不报的,浪费我好多时间,咳,基础太差了...
3 年多之前 回复
xy2017
xy2017 回复Kolamu: 我刚找到问题了,我在底下发表了,你看看
3 年多之前 回复
strongerzhi
Kolamu 回复xy2017: 最简单的办法,入口打日志,看看日志打在了哪里,如果可以,就单步断点过去看
3 年多之前 回复
xy2017
xy2017 回复Kolamu: 不知道怎么调试。。。
3 年多之前 回复
xy2017
xy2017 回复Kolamu: 太深入了,看不懂
3 年多之前 回复
strongerzhi
Kolamu 回复xy2017: 你这个是不是走到const_interator里面了,调试一下,如果是走到这里的话应该是把vector<XXX*>::const_interator吧
3 年多之前 回复
xy2017
xy2017 红叉后面就是说地址无法访问,但是调用任何vector的函数之前都显示可以访问的
3 年多之前 回复

你这个vector会不会有其他地方在修改,有没有注意线程同步

xy2017
xy2017 没有线程,只要在成员函数里叫begin就会这样
3 年多之前 回复

好吧,在迭代之前我声明了一个类,这个类有16个float,我以为float是32位,所以在这个类的构造函数里用memset清零16乘32,
看来memset用的是字节,应该是16乘4...
所以把后面的内存清掉了。

strongerzhi
Kolamu 回复xy2017: 偷懒和小聪明带来的就是灾难!^_^
3 年多之前 回复
xy2017
xy2017 这个函数好危险,早知道就老老实实用sizeof就好的
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐