首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么要在堆中分配内存

2013-03-14 
为何要在堆中分配内存RT RT RT 虽然我知道可以在堆中分配内存也会在栈中创建变量 可是为何我们要在堆中分

为何要在堆中分配内存
RT RT RT 虽然我知道可以在堆中分配内存  也会在栈中创建变量 可是为何我们要在堆中分配内存呢还有可能忘记释放  全在栈中不行吗  我们不是也可以搞个指针 指向栈中的变量 传来传去吗
求大神明示  视频中好像是说空间只能在程序运行的时候才能确定 可是类定义 大小不就确定了吗
小弟新手 求具体例子为什么要在堆中分配内存 c c++?
[解决办法]
通常情况下:栈区大小<全局数据区大小<堆区大小
[解决办法]
在win32中 栈中的空间是连续了,而且大小有限,一般就1m 或者2m,这点内存对于程序来说是远远不够的,而堆中的空间可以不连续,可以申请足够大的空间
[解决办法]
1,性能。为减少线程上下文切换开销,栈的空间不会很大。所以不能把数据全放在栈上。
2,灵活性。全局空间虽然很大,但是生存期太长,不灵活,也影响性能,所以不能全放在全局空间上的。

C/c++的空间分布是精心设计的,都为了高性能
[解决办法]
在自定义函数中,如果要动态分配所需空间,且返回给用户,那么你就不能使用栈内存,因它的生命周期只在函数内,当自定义函数调用完毕,这个栈就消失了,那么也就返回给用户一个悬空指针!

热点排行