黑马程序员技术交流社区
标题:
堆(heap)和栈(Stack)的区别
[打印本页]
作者:
sorry88886
时间:
2015-12-13 20:52
标题:
堆(heap)和栈(Stack)的区别
程序的运行场所是内存,栈和堆是进程的虚拟内存中的两部分区域。
当程序被执行时,程序代码,你所创建的变量、常量等都会被压入栈空间里,栈是程序代码的执行区域。栈的内存地址是连续的且被一一记录,所以说当你创建了一个变量(比如int var = 1),我们就可以通过var这个变量来访问变量的内容。在这里,var就存放在栈中,它的地址已经默认被编译器计算好了,调用过程也不需要你涉及到有关地址的操作。更直观的感受是数组,数组里的元素在栈里面是连续排放的,相邻两个元素的地址相差1。
而堆是不同于栈的另一部分区域,系统会给每个程序分配一部分栈空间让他们能够运行起来,问题就是栈空间必然存在不够用的问题,而堆不属于程序,堆是独立的,是公用的。只要你malloc(sizeof(SIZE_YOU_WANT)),就可以得到相应一部分的堆空间。{:3_53:}
作者:
马赛
时间:
2015-12-13 20:57
总结的不错
作者:
贪吃的熊二
时间:
2015-12-14 23:03
我是午夜DJ
作者:
迷茫不堪的年纪
时间:
2015-12-15 02:11
换言之 堆存未知的 栈存已知的
作者:
水瓶座
时间:
2015-12-15 07:32
好东西!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2