社区
C#
帖子详情
c#中,哪些数据(变量)是保存在寄存器中,哪些是保存在堆、堆栈中
yq_net
2007-04-26 10:54:02
att
...全文
196
1
打赏
收藏
c#中,哪些数据(变量)是保存在寄存器中,哪些是保存在堆、堆栈中
att
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lxsfg
2007-04-26
打赏
举报
回复
个人理解:
值类型数据保存在栈中,引用类型数据变量指针保存在栈中数据保存在堆中 至于寄存器 我也不知道
见笑了 望高手指正
类成员
变量
的存储
首先只是编译好的程序是以二进制的方式
保存
在硬盘上的,如exe,dll等。 2:程序运行时被加载解析到内存,这个时候
变量
保存
就比较复杂了。 3:如果是全局
变量
和静态成员会被
保存
在
数据
段内。 4:
变量
不管是
C#
,C++ ,VB神马的,一般内成员变
保存
在栈
中
,如果成员
变量
是指针,那指针本身
保存
在SP
寄存器
中
(
堆
栈
指针
寄存器
)。指针成员指向的对象可能
保存
在
堆
栈
中
(普通如&int ch
C语言
中
全局
变量
存放在哪个位置?
全局
变量
存放在静态存储区,位置是固定的。 局部
变量
在栈空间,栈地址是不固定的。 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的
变量
的存储区。里面的
变量
通常是局部
变量
、函数参数等。
堆
:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区:就是那些由malloc等分配的内存块,他和
堆
是十分相似的,不过它是用free来结束自己的生命的。 全局存储区(静态存储区
区分
堆
、栈内存里存放的
变量
什么
变量
在
堆
内存里存放,什么
变量
在栈内存里存放
堆
和栈的区别 (stack and heap) 一般认为在c
中
分为这几个存储区 1栈 - 有编译器自动分配释放 2
堆
- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态区),全局
变量
和静态
变量
的存储是放在一块的,初始化的全局
变量
和静态
变量
在一块区域,未初始化的全局
变量
和未初始化的静态
变量
在相邻的另一块区域。 程序结束释放。 ...
C#
数据
类型在内存
中
的存储原理
在
C#
中
,
变量
vb.net教程的类型就属引用类
c#
教程型,值类型,以及他们之间相互的转换比较难理解,里面更是涉及到了类python基础教程型在内存
中
的存储结构,本文通过内存,栈,
堆
,值类型,引用类型的关系,以及相互转换时产生的装java基础教程拆箱操作,来给大家梳理一下其
中
的过程,拨开各种层层的技术迷sql教程雾,探究其真正的本质。如果大家对过程产生疑问或者描述过程有错误的地方,欢迎在评论区
中
多多指正,大家一起学习,一起进步! 内存 内存的物理结构 在讲
数据
结构之前,和大家先一起回顾下内存的物理结
C#
中
的
堆
与栈
在看楚广明老师讲的
C#
视频时,里面提到了“
堆
与栈[zhàn]”,很是一头雾水。所以就动手研究了一下。下面是研究的结果,如果和真正的理论意义有出入,还请见谅! 一、
堆
与栈的定义
堆
(heap):
堆
是从下往上分配,所以已用的空间在自由空间下面,
C#
中
所有引用类型的对象分配在托管
堆
上,托管
堆
在内存上是连续分配的,并且内存对象的释放受垃圾收集机制的管理,效率相对于栈来说要低的多。 栈(s
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章