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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 251143492 中级黑马   /  2014-12-3 23:58  /  1042 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内存划分几个区?作用都是什么呀?

4 个回复

倒序浏览
今天学习的视屏中讲到了三个区  (其实我记得在哪里见过是说分五个区)
1.常量区:存储字符串常量
2.堆:存储对象
3.栈:存储局部变量

应该不是很详细哈
回复 使用道具 举报
内存的分区:
代码区:存储的代码编译后的二进制的文件
数据区:存储一些程序需要的数据
常量区:全局,静态数据,字符串常量
堆区:系统运行的过程,程序申请的内存空间
栈区:局部变量(特殊的结构,先进后出)
还有动态内存分布,自己总结吧!加油~
回复 使用道具 举报
1、程序代码区:存放函数体的二进制代码。  

2、全局区数据区:全局数据区划分为三个区域。
    全局变量和静态变量的存储是放在一块 的,
    初始化的全局变量和静态变量在一块区域,
    未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
    常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。
    我们所说的BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。
    BSS是英文Block Started by Symbol的简称。

3、栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等。存储结构像一个倒立的杯子,当函数进栈时,函数会被压
到“杯顶”即为栈底,出栈也是“杯口”先出即为栈顶元素。

4、堆区:一般由程序员分配释放,如一般的数组、对象如果实例化,就存于堆区

5、命令行参数区:存放命令行参数和环境变量的值。  
回复 使用道具 举报
堆区(动态的):alloc出来的  在程序运行中才进行分配  
栈区:局部变量
数据区:静态变量,字符串常量
代码区:代码 ,类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马