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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gamyc 中级黑马   /  2015-5-18 12:32  /  868 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

视频教程中,老师仅仅提到内存分5大区域,说到栈和堆,没提别的

2 个回复

倒序浏览
   转载自: http://blog.csdn.net/hairetz/article/details/4141043
  1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其  
  操作方式类似于数据结构中的栈。  
  2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回  
  收   。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。  
  3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的  
  全局变量和静态变量在一块区域,   未初始化的全局变量和未初始化的静态变量在相邻的另  
  一块区域。   -   程序结束后由系统释放。  
  4、文字常量区   —常量字符串就是放在这里的。   程序结束后由系统释放  
  5、程序代码区—存放函数体的二进制代码。  
  1. 例子程序:
  2.   这是一个前辈写的,非常详细   
  3.   //main.cpp   
  4.   int   a   =   0;   全局初始化区   
  5.   char   *p1;   全局未初始化区   
  6.   main()   
  7.   {   
  8.   int   b;   栈   
  9.   char   s[]   =   "abc";   栈   
  10.   char   *p2;   栈   
  11.   char   *p3   =   "123456";   123456\0在常量区,p3在栈上。   
  12.   static   int   c   =0;   全局(静态)初始化区   
  13.   p1   =   (char   *)malloc(10);   
  14.   p2   =   (char   *)malloc(20);   
  15.   分配得来得10和20字节的区域就在堆区。   
  16.   strcpy(p1,   "123456");   123456\0放在常量区,编译器可能会将它与p3所指向的"123456"  
  17.   优化成一个地方。   
  18.   }   
复制代码
回复 使用道具 举报
香草芭芙 发表于 2015-5-18 12:44
转载自: http://blog.csdn.net/hairetz/article/details/4141043
  1、栈区(stack)—   由编译器自动 ...

太感谢你的分享了,记得以前看过,不过早就忘了,还得多复习复习了:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马