为何要在堆中分配内存

kaiseer8828 2013-03-05 02:32:22
RT RT RT 虽然我知道可以在堆中分配内存 也会在栈中创建变量 可是为何我们要在堆中分配内存呢还有可能忘记释放 全在栈中不行吗 我们不是也可以搞个指针 指向栈中的变量 传来传去吗
求大神明示 视频中好像是说空间只能在程序运行的时候才能确定 可是类定义 大小不就确定了吗
小弟新手 求具体例子
...全文
249 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
通常情况下:栈区大小<全局数据区大小<堆区大小

70,024

社区成员

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

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