随笔 - 5  文章 - 25  评论 - 0  阅读 - 5555

堆和栈的区别(值类型和引用类型)(装箱拆箱)

1.值类型放在栈中,引用类型放在堆中

2.栈是编译期间就分配好的内存空间,

堆是程序运行时动态分配的内存空间

3.栈是由存储顺序的,保存先进后出

堆是无序的,用户可以手动释放,当达到一定的值时,通过垃圾回收器回收

一、值类型  int 、枚举、 struct

1.分配到栈中,可以自动释放

2.不支持多态

3.适合存储

二、引用类型  Object 数组 String 接口

1.分配到堆中,需要手动释放

2.支持多态

3.适合用于定义程序的行为

三、装箱  将值类型转化为引用类型 分为3步

1.在托管堆中分配内存,分配内存量。是值类型各字段所需的内存量

还要加上托管堆上所有对象都有的两个成员(类型对象指针和同步块索引)

2.值类型的字段复制到新分配的堆内存

3.返回对象地址,现在该地址是对象引用

四、拆箱  将引用类型转化为值类型  分为2步

1.获取已装箱的对象的各个成员的地址

2.将字段包含的值从堆中复制到基于栈的值类型实例中

 

posted on   伍佰仟  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 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

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