为何要在堆中分配内存

kaiseer8828 2013-03-05 02:32:22
RT RT RT 虽然我知道可以在堆中分配内存 也会在栈中创建变量 可是为何我们要在堆中分配内存呢还有可能忘记释放 全在栈中不行吗 我们不是也可以搞个指针 指向栈中的变量 传来传去吗
求大神明示 视频中好像是说空间只能在程序运行的时候才能确定 可是类定义 大小不就确定了吗
小弟新手 求具体例子
...全文
238 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
trueeyu 2013-03-06
  • 打赏
  • 举报
回复
栈内存的生命周期只在函数内,如果都在栈里分配的话,函数执行完,就会释放了
一根烂笔头 2013-03-06
  • 打赏
  • 举报
回复
在自定义函数中,如果要动态分配所需空间,且返回给用户,那么你就不能使用栈内存,因它的生命周期只在函数内,当自定义函数调用完毕,这个栈就消失了,那么也就返回给用户一个悬空指针!
mujiok2003 2013-03-05
  • 打赏
  • 举报
回复
1,性能。为减少线程上下文切换开销,栈的空间不会很大。所以不能把数据全放在栈上。 2,灵活性。全局空间虽然很大,但是生存期太长,不灵活,也影响性能,所以不能全放在全局空间上的。 C/c++的空间分布是精心设计的,都为了高性能
palm008 2013-03-05
  • 打赏
  • 举报
回复
支持楼主挑战传统思想的勇气
子谋 2013-03-05
  • 打赏
  • 举报
回复
请问,如果你有两个函数,需要共用一个二维数组,怎么办?
Dobzhansky 2013-03-05
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
  char buf[4096*1024];
  printf("hello world\n");
  return 0;
}

---------------------------
highstatck.exe - Application Error
---------------------------
The exception unknown software exception (0xc00000fd) occurred in the application at location 0x00401117.


Click on OK to terminate the program
Click on CANCEL to debug the program
---------------------------
OK   Cancel   
---------------------------
wugui414 2013-03-05
  • 打赏
  • 举报
回复
引用 4 楼 zilaishuichina 的回复:
引用 3 楼 kaiseer8828 的回复:没看懂。。难道仅仅因为大小?那我们全搞成栈不要堆不就可以了 引用 1 楼 zhao4zhong1 的回复:通常情况下:栈区大小<全局数据区大小<堆区大小 ~~~ 那你准备把这个栈搞多大
因为栈用完了就施放了丫,施放了所有的栈中的变量就没有了丫。 如果你把所有的代码都写在main方法中,那确实不需要堆分配空间
wushipin 2013-03-05
  • 打赏
  • 举报
回复
在win32中 栈中的空间是连续了,而且大小有限,一般就1m 或者2m,这点内存对于程序来说是远远不够的,而堆中的空间可以不连续,可以申请足够大的空间
zilaishuichina 2013-03-05
  • 打赏
  • 举报
回复
引用 3 楼 kaiseer8828 的回复:
没看懂。。难道仅仅因为大小?那我们全搞成栈不要堆不就可以了 引用 1 楼 zhao4zhong1 的回复:通常情况下:栈区大小<全局数据区大小<堆区大小
~~~ 那你准备把这个栈搞多大
kaiseer8828 2013-03-05
  • 打赏
  • 举报
回复
没看懂。。难道仅仅因为大小?那我们全搞成栈不要堆不就可以了
引用 1 楼 zhao4zhong1 的回复:
通常情况下:栈区大小<全局数据区大小<堆区大小
赵4老师 2013-03-05
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
赵4老师 2013-03-05
  • 打赏
  • 举报
回复
通常情况下:栈区大小<全局数据区大小<堆区大小

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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