社区
C++ 语言
帖子详情
C++中成员变量分配空间后,在成员函数中空间消失了
liupeizhao
2020-01-07 03:11:38
我有一个类,名字为A_CLUSTER,其中有一个成员变量叫作_rtcm,一个成员函数叫作decode_char(). 类定义中的相关代码如下:
在main函数中,我用_rtcm.resize()分配了空间,也成功了。
但是进入到decode_char()函数中,_rtcm的空间就没有了。请问是怎么回事呢?
...全文
290
12
打赏
收藏
C++中成员变量分配空间后,在成员函数中空间消失了
我有一个类,名字为A_CLUSTER,其中有一个成员变量叫作_rtcm,一个成员函数叫作decode_char(). 类定义中的相关代码如下: 在main函数中,我用_rtcm.resize()分配了空间,也成功了。 但是进入到decode_char()函数中,_rtcm的空间就没有了。请问是怎么回事呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,看看实际的大小是否改变了
系统不会自己改变它,除非你操作了它
这是一个正经昵称
2020-01-07
打赏
举报
回复
信息还是少,看不到相关函数的实现,猜不到
3、CPP面向对象之—— 类、对象(封装),继承
本文详细介绍了面向对象编程的核心概念,包括类与对象的定义、对象内存布局、this指针的作用、封装、构造函数和析构函数的使用。此外,还探讨了内存
空间
的
分配
、初始化、
成员变量
初始化以及构造函数的调用顺序。重点讲解了构造函数如何在对象创建时初始化
成员变量
,并通过实例解释了为什么需要析构函数进行内存清理。文章最后讨论了程序优化策略,如声明和实现分离以及命名
空间
的使用。
C++
中
各种数据成员及
成员函数
的定义及使用
本文深入探讨
C++
中
类的概念及其应用,介绍类的基本结构、
成员函数
与变量的访问控制,以及对象的创建和使用方式。此外还讨论了常
成员函数
的作用、静态数据成员的应用场景、以及struct与class的区别等高级特性。
C++
Gotchas 条款60:没能区分单体内存
分配
与数组内存
分配
本文围绕
C++
中
内存
分配
展开,强调要区分单体内存与数组内存
分配
。介绍了单一个Widget和Widget数组分别使用new、delete和new []、delete []进行
空间
分配
和释放,指出内存管理函数需配对使用,还提及使用vector代替array更好,以及内存
分配
概念错误在
成员函数
设计
中
的体现。
C++
静态
分配
和动态
分配
本文介绍了
C++
中
堆和栈的区别。栈存储局部变量和函数调用,由编译器自动管理,操作快、大小固定;堆用于动态内存
分配
,需手动管理,操作可能较慢、大小灵活。还阐述了对象的存储方式和生命周期管理,包括动态和栈
分配
的特点、对象传递方式及适用场景等。
C++
动态内存
分配
:从基础到最佳实践
本文全面探讨
C++
动态内存
分配
机制。先介绍静态与动态
分配
区别、new和delete运算符及动态
分配
优势;接着深入其工作原理、多维数组及内存
分配
失败处理;指出常见问题如内存泄漏、悬挂指针等;还介绍现代
C++
智能指针改进;最后给出优先用智能指针等最佳实践。
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章