堆内存于栈内存怎么区别,举例子说明

例如,应该怎么做... 例如,应该怎么做 展开
 我来答
10里8乡的俊后生
高粉答主

2018-10-04 · 醉心答题,欢迎关注
知道答主
回答量:28
采纳率:0%
帮助的人:8024
展开全部

没有什么方法可以进行堆和栈之间的区别,比如说结构体就是值类型,只能放在栈中,除非你把它转换为类,否则它永远都在栈中。

而简单数据的话,在C#中可以进行一个强制类型转换来进行装箱。

例子:

int a = 1;

object i = (object)a;

把一个整数值类型的变量装箱进一成为一个引用类型,这样做明显会增加程序的运行时间,减低性能。

扩展资料

堆内存是区别于栈区、全局数据区和代码区的另一个内存区域。堆允许程序在运行时动态地申请某个大小的内存空间。

在学习C程序设计语言时,会遇到两个很相似的术语:堆内存和栈内存。这两个术语虽然只有一字之差,但是所表达的意义还是有差别的。

参考资料堆内存_百度百科

东莞市友贸实业有限公司_
2023-11-22 广告
[编辑本段]堆内存和栈内存 在学习c程序设计语言时,会遇到两个很相似的术语:堆内存和栈内存。这两个术语虽然只有一字之差,但是所表达的意义还是有差别的,堆内存和栈内存的区别可以用如下的比喻来看出:使用堆内存就象是自己动手做喜欢吃的菜肴,比较麻... 点击进入详情页
本回答由东莞市友贸实业有限公司_提供
百度网友5023f88
2012-01-17 · TA获得超过624个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:59万
展开全部
这个区别对于我们来说并不大,这是内存分配的两种方法。一般代码逻辑,简单变量,结构体都是放入栈中,而对象,以及被装箱的数据是放入堆中的。
简单来说,栈就是一个很长的栈(数据结构中的栈,如果不理解可以当做是像线一样的一长串数据)。里面存着各种逻辑,以及像整形,浮点型等数据,根据栈先进先出的原则,代码会一条条被执行,执行代码中包含着栈中可以存放的数据。但数据量过大的时候,存入栈中会明显影响性能。所以,我们将大量的数据存入堆中,之后,栈中放堆的地址。这样,在进行数据调用的时候,可以通过地址找到对应数据。
对于我们来说,没有什么特别的方法可以进行堆和栈之间的转换,比如说结构体就是值类型,只能放在栈中,除非你把它转换为类,否则它永远都在栈中。反之亦然。
而简单数据的话,在C#中可以进行一个强制类型转换来进行装箱。
比如说:
int a = 1;
object i = (object)a;
把一个整数值类型的变量装箱进一成为一个引用类型,这样做明显会增加程序的运行时间,减低性能。而且在拆箱的时候,必须注意它原来的数据类型。否则可能出现拆箱失败的情况。由此可见,对于内存的管理,我们还是直接交给CLR比较好。强行的装箱拆箱,只会增加程序运行时间,减低系统性能,降低代码可读性。

ps:全部是自己总结的,打字很辛苦,望采纳。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lhuajing
2012-01-19 · TA获得超过164个赞
知道答主
回答量:115
采纳率:28%
帮助的人:31.7万
展开全部
int i; //存于栈
char* pC = new char;//存于堆
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惠企百科
2022-12-02 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

没有什么方法可以进行堆和栈之间的区别,比如说结构体就是值类型,只能放在栈中,除非你把它转换为类,否则它永远都在栈中。

而简单数据的话,在C#中可以进行一个强制类型转换来进行装箱。

例子:

int a = 1;

object i = (object)a;

把一个整数值类型的变量装箱进一成为一个引用类型,这样做明显会增加程序的运行时间,减低性能。

扩展资料

堆内存是区别于栈区、全局数据区和代码区的另一个内存区域。堆允许程序在运行时动态地申请某个大小的内存空间。

在学习C程序设计语言时,会遇到两个很相似的术语:堆内存和栈内存。这两个术语虽然只有一字之差,但是所表达的意义还是有差别的。

参考资料堆内存_百度百科

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帮我想想起啥名
2018-03-30
知道答主
回答量:9
采纳率:0%
帮助的人:8893
引用Damos_14725的回答:
这个区别对于我们来说并不大,这是内存分配的两种方法。一般代码逻辑,简单变量,结构体都是放入栈中,而对象,以及被装箱的数据是放入堆中的。
简单来说,栈就是一个很长的栈(数据结构中的栈,如果不理解可以当做是像线一样的一长串数据)。里面存着各种逻辑,以及像整形,浮点型等数据,根据栈先进先出的原则,代码会一条条被执行,执行代码中包含着栈中可以存放的数据。但数据量过大的时候,存入栈中会明显影响性能。所以,我们将大量的数据存入堆中,之后,栈中放堆的地址。这样,在进行数据调用的时候,可以通过地址找到对应数据。
对于我们来说,没有什么特别的方法可以进行堆和栈之间的转换,比如说结构体就是值类型,只能放在栈中,除非你把它转换为类,否则它永远都在栈中。反之亦然。
而简单数据的话,在C#中可以进行一个强制类型转换来进行装箱。
比如说:
int a = 1;
object i = (object)a;
把一个整数值类型的变量装箱进一成为一个引用类型,这样做明显会增加程序的运行时间,减低性能。而且在拆箱的时候,必须注意它原来的数据类型。否则可能出现拆箱失败的情况。由此可见,对于内存的管理,我们还是直接交给CLR比较好。强行的装箱拆箱,只会增加程序运行时间,减低系统性能,降低代码可读性。

ps:全部是自己总结的,打字很辛苦,望采纳。
展开全部
栈是先进后出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式