免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13793 | 回复: 67
打印 上一主题 下一主题

临时变量,static,malloc分别申请在哪里? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-13 14:07 |只看该作者 |倒序浏览
临时变量,static,malloc分别申请在堆,堆栈,动态内存区?
1)函数内部的临时变量,
2)函数内部的static 变量
3)通过malloc得到的变量
4)全局变量
分别申请在堆,堆栈,或动态内存区中?
另外能不能说下关于堆和堆栈,谢谢了

我是新手,觉得肯能是:1)是在动态内存区申请,2)是在堆中
3)在堆栈中4)在堆中。

欢迎根铁指教,讨论。

论坛徽章:
0
2 [报告]
发表于 2005-04-13 14:11 |只看该作者

临时变量,static,malloc分别申请在哪里?

我的理解是这样的
临时变量在运行时在堆栈(stack)上分配
Static则是在静态存储区分配
malloc调用则是在堆(heap)上动态分配的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-04-13 14:39 |只看该作者

临时变量,static,malloc分别申请在哪里?

1在栈中,2、3、4在堆中。堆可以看做成静态存储区,一般不做区别。栈可以看做是动态的。

论坛徽章:
0
4 [报告]
发表于 2005-04-13 14:47 |只看该作者

临时变量,static,malloc分别申请在哪里?

[quote]原帖由 "aero"]1在栈中,2、3、4在堆中。堆可以看做成静态存储区,一般不做区别。栈可以看做是动态的。[/quote 发表:


商榷一下。我觉得这样:

1,在所有函数之外的变量,在静态区,即data段;
2,所有static,在data中;
3,函数中的自动变量,在栈,即stack中;
4,malloc来的,在堆,即heap中。

怎样定义“动态”二字?这是关键。倘若定义为可由程序根据需要自行动态调整其大小,那么堆是动态的;若定义为OS根据需要动态伸缩其大小,而对应用程序透明,那么栈是动态的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-04-13 14:50 |只看该作者

临时变量,static,malloc分别申请在哪里?

^_^,heap一般是在data上面吧。其实,初学者不做区别来理解也可以。我当初就是这么理解的。

论坛徽章:
0
6 [报告]
发表于 2005-04-13 19:22 |只看该作者

临时变量,static,malloc分别申请在哪里?

谢谢以上各位!!
那么堆(heap)和堆栈(stack)在内存处于什么样的位置?
albcamus提到的data段是指?

论坛徽章:
0
7 [报告]
发表于 2005-04-13 20:39 |只看该作者

临时变量,static,malloc分别申请在哪里?

不知道对不对
我理解 段是指内存中的数据段
专门用来存放计算机所要的数据的那部分

论坛徽章:
0
8 [报告]
发表于 2005-04-13 21:19 |只看该作者

临时变量,static,malloc分别申请在哪里?

自己可以在Linux上用gdb试一下:

0xbffffxxx  -->; user stack 栈
0x40xxxxxx -->; heap 堆(上面还有动态链接库mmap后的代码段)
0x8048xxx  -->; data segment 数据段(数据段和代码段的线性地址是重叠的)

论坛徽章:
0
9 [报告]
发表于 2005-04-13 21:22 |只看该作者

临时变量,static,malloc分别申请在哪里?

OS kernel 中描述的段和CPU芯片中描述的段并不是同一概念

灌满300篇真是不容易啊~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-04-13 21:23 |只看该作者

临时变量,static,malloc分别申请在哪里?

原帖由 "ayazero" 发表:
OS kernel 中描述的段和CPU芯片中描述的段并不是同一概念

灌满300篇真是不容易啊~


兄是绿盟的人?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP