栈,堆,静态存储区
来源:互联网 发布:数据网络开关在那 编辑:程序博客网 时间:2024/05/22 17:01
1.栈是先入后出,
2.栈保存了一个函数调用所需的维护信息,函数参数,函数返回地址,局部变量,函数调用上下文。没有栈就没有函数,没有局部变量。
3.
栈保存了一个函数调用所需的维护信息(函数参数,函数返回值地址,局部变量,函数调用上下文)
4.栈上的数据在函数返回后就会被释放掉,无法传递到函数外部
5.堆是程序中一块巨大的内存空间,可由程序自由使用
6.堆中被程序申请使用的内存在程序主动释放前将一直有效
7.堆空间通过申请才能获得
8.系统对堆空间的管理方式(空闲链表法,位图法,对象池法等等)
9.程序静态存储区随着程序的运行而分配空间,直到程序运行结束
10.在程序的编译期静态存储区的大小就已经确定
11.程序的静态存储区主要用于保存程序中的全局变量和静态变量
12.与堆栈不同,静态存储区的信息最终会保存到可执行程序中.
总结:
栈主要用于函数调用,堆区主要用于内存的动态申请和归还,静态存储区用于保存全局变量和静态变量
内存布局
1.文件头——代码段---数据段((定义的数据--未定的数据)--静态区的)
2.堆栈段在程序运行后才正式存在,是程序运行的基础
3..bass段存放的是未初始化的全局变量和静态变量
4..text段存放的是程序中的可执行代码
6..data段保存的是那些已经初始化了的全局变量和静态变量
7..rodata段存放程序中的常量值,如字符串常量
8.静态存储区通常指程序中的.bss和.data段
9.只读区通常指程序中的.rodata段
10.局部变量所占空间为栈上空间
11.动态空间为堆中的空间
12.程序可执行代码存放于.text段
scanf不能输入字符串,输入字符串用gets,vs为了安全着想可以使用scanf_s指定输入长度,fgets从文件流中输入指定的长度。
- 静态存储区、堆、栈
- 栈 , 堆 , 静态存储区
- 栈,堆,静态存储区
- 静态存储区、代码区、堆、栈
- C++:静态存储区,堆,栈区别
- 堆、栈和静态存储区
- C++堆,栈,静态存储区介绍
- 堆,栈,静态存储区的理解
- 程序中的栈、堆、静态存储区
- 常量 栈 自由存储区 堆 全局/静态存储区
- 静态存储区、动态存储区、堆、栈理解
- 堆,栈,静态存储区和常量存储区
- 堆,栈,静态存储区和常量存储区
- 堆栈、堆、静态存储区
- 静态存储区、堆区和栈区
- (转)堆、栈、静态存储区、文字常量区
- 简单理解 栈、堆、静态存储区(方法区)
- 内存分配——静态存储区 栈 堆
- Emmet学习笔记
- 函数与指针
- nodejs模块学习: express-session 解析
- 动态内存分配
- Mybatis初窥:缓存
- 栈,堆,静态存储区
- 野指针与内存操作
- 函数的本质
- 数据结构基础概念
- 线性表
- C++基础
- C++基础2
- 链接脚本
- 关键路径详解