黑马程序员技术交流社区

标题: 栈和堆 [打印本页]

作者: evenzhu1989    时间: 2015-6-2 20:14
标题: 栈和堆
1、栈区:由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。
2、堆区:一般由程序员分配释放,   若程序员不释放,程序结束时可能由系统回收;
3代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     int b;  //栈区
  6.     char s[] = "aaa";   //栈区
  7.     char *p2;   //栈区
  8.     char *p3 = "123456";   // 123456/0 在常量区,p3在栈上。
  9.     char *p1 = (char *)malloc(10);//10个字节的区域,在堆区
  10.     p1="aaaa";//堆区
  11.     free(p1);//释放p1
  12. }
复制代码

4、网上有一个很好的比喻
           使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就  
  走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自  
  由度小。   
          使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由  
  度大。
作者: Dzlbp    时间: 2015-6-2 20:53
最后那个比喻挺好的
作者: 碧空海    时间: 2015-6-2 20:55
学习了,,,,,,,,,,
作者: 李闯    时间: 2015-6-2 21:25
很不错的 分享 谢了
作者: doushu    时间: 2015-6-2 21:49
点点滴滴的,,,,,,,
作者: 洋柿子    时间: 2015-6-2 21:56
不错的见解。
作者: 这是829    时间: 2015-6-4 00:14
我又来围观学习啦
作者: jx836202365    时间: 2015-6-4 08:00
还没有学到这个知识点
作者: Dariel    时间: 2015-6-4 08:27
写的不错
作者: wangguanyang    时间: 2015-6-4 08:32
描述的很形象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2