关于对象实例化的一些问题

代号陈 2015-06-26 10:15:56

对象占用的内存空间只等于该对象的数据成员的长度之和,方法是不占用内存空间的,只有调用该方法的时候才会开辟空间。
类的每个实例都要占用一段内存空间,用于保存非静态的成员变量;静态成员变量、方法,在内存里只有一份,所有类成员公用。

问:
一 关于静态成员
1. 静态字段是不是在类的第一次实例化的时候分配内存的?
2. 静态方法是在类的调用的时候分配内存?还是在类的第一次实例化的时候分配内存?
3. 静态成员什么时候释放内存?
二 关于非静态成员
1. 实例化对象的时候,会给对象的非静态字段分配内存,那么,这个内存又是什么时候释放的?
三 Java和c++的区别
上面问的都是一些内存释放的问题,Java和c++的处理方式是不是不一样的?
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
代号陈 2015-06-27
  • 打赏
  • 举报
回复
感谢两位,了解了,
jiht594 2015-06-26
  • 打赏
  • 举报
回复
静态成员变量的生命周期和全局变量一样, 程序启动到程序结束. 函数占用内存是什么意思? 栈内存超出生命周期自动释放. 堆得程序员释放.
paschen 版主 2015-06-26
  • 打赏
  • 举报
回复
至于非静态成员,在该对象销毁时就会自动释放内存,每个对象都有自己独立的非静态成员变量
paschen 版主 2015-06-26
  • 打赏
  • 举报
回复
静态成员、函数都不是在类实例化时才分配,因为就算没有对象,也可以用类名去访问静态成员,如ClassA::xxx 静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。

64,682

社区成员

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

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