A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sorry88886 中级黑马   /  2015-12-13 20:52  /  889 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序的运行场所是内存,栈和堆是进程的虚拟内存中的两部分区域。
当程序被执行时,程序代码,你所创建的变量、常量等都会被压入栈空间里,栈是程序代码的执行区域。栈的内存地址是连续的且被一一记录,所以说当你创建了一个变量(比如int var = 1),我们就可以通过var这个变量来访问变量的内容。在这里,var就存放在栈中,它的地址已经默认被编译器计算好了,调用过程也不需要你涉及到有关地址的操作。更直观的感受是数组,数组里的元素在栈里面是连续排放的,相邻两个元素的地址相差1。
而堆是不同于栈的另一部分区域,系统会给每个程序分配一部分栈空间让他们能够运行起来,问题就是栈空间必然存在不够用的问题,而堆不属于程序,堆是独立的,是公用的。只要你malloc(sizeof(SIZE_YOU_WANT)),就可以得到相应一部分的堆空间。{:3_53:}

评分

参与人数 1黑马币 +5 收起 理由
贪吃的熊二 + 5 神马都是浮云

查看全部评分

4 个回复

倒序浏览
总结的不错
回复 使用道具 举报
我是午夜DJ
回复 使用道具 举报
换言之 堆存未知的  栈存已知的
回复 使用道具 举报
水瓶座 来自手机 中级黑马 2015-12-15 07:32:05
报纸
好东西!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马