C++中成员变量分配空间后,在成员函数中空间消失了

liupeizhao 2020-01-07 03:11:38
我有一个类,名字为A_CLUSTER,其中有一个成员变量叫作_rtcm,一个成员函数叫作decode_char(). 类定义中的相关代码如下:


在main函数中,我用_rtcm.resize()分配了空间,也成功了。

但是进入到decode_char()函数中,_rtcm的空间就没有了。请问是怎么回事呢?
...全文
244 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
GKatHere 2020-01-19
  • 打赏
  • 举报
回复
在某处操作越界,将vector内容覆盖掉了,调试下看哪越界。
qq_40162781 2020-01-19
  • 打赏
  • 举报
回复
是否是第80行的代码改变大小了?
qq_40162781 2020-01-19
  • 打赏
  • 举报
回复
看不出来,应该是其他地方吧,resize是使用rtcm_t的默认构造函数
donwmufromdying 2020-01-10
  • 打赏
  • 举报
回复
你好歹在调用decode前边有类似这种代码:_rtcm.push_back(rtcm_t()).另外,我一般不太会往vector里放这种对象,我都是这么用: vector<rtcm_t*> _rtcm; _rtcm.push_back(new rtcm_t()); 用完了直接purge
donwmufromdying 2020-01-10
  • 打赏
  • 举报
回复
我是真的没看到你往你的vector里放入rtcm_t的对象,所以你的成员函数里怎么可能对呢?你这个vector是空的。你就是resize出100个预留空间有啥用?这个vector里边没对象
taodm 2020-01-09
  • 打赏
  • 举报
回复
size()大小请以打印/messagebox出来的为准,不要以调试器里看到的为事实。
真相重于对错 2020-01-07
  • 打赏
  • 举报
回复
不要这么操做vector ,vector尽可能用push_back,和pop_back
寻开心 2020-01-07
  • 打赏
  • 举报
回复
在你的主函数当中, 有cluster方法调用的语句后面都加一个获取size的函数, 在decode_char被调用前也加一个
这样你可以定位,这个size是什么时候变化的,找到变化的位置再说
liupeizhao 2020-01-07
  • 打赏
  • 举报
回复
我没有可以地释放它,可能是因为C++理解不够深刻,使用得不够正确。不知道什么原因会导致这种情况,程序中不存在变量重名。
liupeizhao 2020-01-07
  • 打赏
  • 举报
回复
在main函数中,_rtcm.resize()之后的size是正常的。如图: 进入函数decode_char(),再获取一次,size就变成0了。如图:
寻开心 2020-01-07
  • 打赏
  • 举报
回复
resize也只是把智能数组的实际长度放大了,不改变内容,其内容也没有实质意义,只是有了有效空间放在哪儿而已
decode_char之前,你可以获取一下size,看看实际的大小是否改变了
系统不会自己改变它,除非你操作了它
  • 打赏
  • 举报
回复
信息还是少,看不到相关函数的实现,猜不到

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧