精选:局部变量、全局变量、堆、堆栈、静态和全局
来源:互联网 发布:集美大学网络中 编辑:程序博客网 时间:2024/06/04 23:10
动态变量存放在堆区,函数代码放在代码区。
---------------------------------------------------------------
栈区是普通的栈数据结构,遵循LIFO后进先出的规则,局部变量安排在那里是ASM时就规定的,这样可以在一个函数结束后平衡堆栈,操作简单,效率高
堆(动态区)在这里应当叫堆栈(不要和数据结构中的堆搞混)是程序在编译时产生的一块用于产生动态内存分配使用的块,操作比较栈要麻烦许多,在分配时要判断最优的地址(防止产生无用的内存碎片(由于屡次的NEW和DELETE产生的夹在两块使用中内存中的空余小内存(不容易被分配))),分配和回收时的效率比栈低多了
---------------------------------------------------------------
栈是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;而栈是函数库提供的功能,特点是灵活方便,数据适应面广泛,但是效率 >有一定降低。栈是系统数据结构,对于进程/线程是唯一的;堆是函数库内部数据结构,不一定唯一。不同堆分配的内存无法互相操作。栈空间分静态分配和动态分配两种。静态分配是编译器完成的,比如自动变量(auto)的分配。动态分配由alloca函数完成。栈的动态分配无需释放(是自动的),也就没有释放函数。为可移植>的程序起见,栈的动态分配操作是不被鼓励的!堆空间的分配总是动态的,虽然程序结束时所有的数据空间都会被释放回系统,但是精确的申请内存/ 释放内存匹>配是良好程序的基本要素。
这是我对堆与栈收藏内容~
---------------------------------------------------------------
堆是程序员管理的,栈是系统管理的.
1、
{
}
int
{
}
执行的结果是:value : 50
说明在第二次调用fun1( )时的初始化value的采用的是上一次value的值,value在静态区的存储空间并没有因为fun1( )的结束而被释放,即体现了一次存储;
2、
a)
b)
顾名思义,全局变量是指能够在全局引用的变量,相对于局部变量的概念,也叫外部变量;同静态变量一样,全局变量位于静态数据区,全局变量一处定义,多处引用,用关键字“extern”引用“外部”的变量。
全局变量也可以是静态的,在前面有过说明,静态全局变量的意义就是不让“外部”引用,是单个源文件里的全局变量,即是编译阶段的全局变量,而不是连接阶段的全局变量。
通过上面的分析,我们不难得出以下结论:
1、
2、
3、
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局【】
- 局部变量、全局变量、堆、堆栈、静态和全局【】
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 局部变量、全局变量、堆、堆栈、静态和全局
- 基于MATLAB的滤波算法
- Golang的演化历程
- 浅析VO、DTO、DO、PO的概念、区别和用处
- 人品计算器
- iOS8 屏幕适配Size Classes
- 精选:局部变量、全局变量、堆、堆栈、静态和全局
- 内存管理
- Unity笔记
- sgu112
- Android学习系列(1)--为App签名(为apk签名)
- hdu 4734数位dp(记忆化搜索)
- spring mvc配置
- 蓝牙设置应用源码分析
- 第13周上机实践项目5——字符串操作(1)