C++动态存储方式与静态存储方式
2024-08-31 14:53:47
如果从变量值存在的时间(即生存期)来分,可将程序中的变量分为:动态存储方式和静态存储方式。它们所占用的存储空间区域不同。
C++存储空间区域
代码区:存放可执行程序的程序代码。
静态存储区:存放静态变量和全局变量。
栈区(Stack):存放动态局部变量
堆区(Heap):存放new和 malloc()申请的动态内存。栈区和堆区统称为动态存储区。
动态存储方式
动态存储区可以存放函数的参数、自动变量、函数调用时的现场保护和返回地址等。这些以动态方式存储的数据,在函数调用时分配动态存储空间,函数结束时释放这些空间,在程序执行过程中,这种分配和释放是动态的,如果一个程序两次调用同一函数,则第一次调用时给形参和函数中的局部变量分配内存空间,第一次调用完毕,这些空间被释放。第二次调用时,重新给形参和函数中的局部变量分配内存空间。两次调用过程函数中形参和局部变量的存储空间不同。如果一个程序包含若干个函数,每个函数中的形参和局部变量的生存期并不等于整个程序的执行周期,而是当函数被调用时,动态地分配存储空间,但函数调用完毕,分配的存储空间将被释放。
静态存储方式
以静态存储方式(全局变量和静态局部变量)存储的数据全部存放在静态存储区中,在程序开始运行前就为其分配相应的存储空间,在程序的整个运行期间一直占用,直到这个程序执行完毕后释放。它的生存期就是整个程序的运行期。在程序执行过程中,它们占据固定的存储空间,而不是动态地进行分配和释放。
最新文章
- Redola.Rpc 的一个小目标
- 使用vbs脚本进行批量编码转换
- JS查看Object对象的内容
- UIView的setNeedsDisplay和setNeedsLayout
- JS字符串格式化函数 string.format
- 虚拟机NUMA和内存KSM
- HDU-2778 DNA Sequence(AC自动机)
- Python 之 MySQL 操作库 lazy_mysql
- ios 正则邮箱
- Chocolate_DP
- python乱码处理
- Angular5.0.0新特性
- history对象的使用--JavaScript基础
- <;TCP/IP原理>; (四) IP编址
- 帆软报表(finereport)常用函数
- Codeforces Round #552 (Div. 3) F. Shovels Shop (前缀和预处理+贪心+dp)
- ORA-00984: 列在此处不允许 SQL parse error location
- docker vm 性能优劣
- CSS3笔记1
- puppet(4)-类、模版语言、模块
热门文章
- 这次一定让你记住 TCP 三次握手、四手挥手!
- golang执行exec命令
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component re
- 2017-01-26--编译busybox总结
- day30 Pyhton 面向对象 继承.装饰器
- 【UR #12】实验室外的攻防战
- monolog 日志
- linux(centos8):配置docker的cgroup driver为systemd
- STM32芯片型号的命名规则
- jmeter静默压测+可视化