当前位置: 首页 > news >正文

C/C++程序的内存开辟

前面我们说过,计算机中内存分为三个区域:栈区,堆区,静态区

但是这只是个简化的版本,接下来我们仔细看看内存区域的划分

 C/C++程序内存分配的几个区域:

  1. 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量,函数参数、返回数据、返回地址等
  2. 堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表
  3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放
  4. 代码段:存放函数体(类成员函数和全局函数)的二进制代码

实际上普通的局部变量是在栈区分配空间的,栈区的特点时在上面创建的变量出了作用域就销毁

但是被static修饰的变量存放在数据段(静态区),数据段的特点是在上面创建的变量,直到程序结束才销毁,所以生命周期变长

http://www.lryc.cn/news/180546.html

相关文章:

  • 【Java 进阶篇】JDBC DriverManager 详解
  • 2023年Linux总结常用命令
  • Mybatis3详解 之 全局配置文件详解
  • 力扣-345.反转字符串中的元音字母
  • 643. 子数组最大平均数I(滑动窗口)
  • Java 21 新特性:虚拟线程(Virtual Threads)
  • 18scala笔记
  • 【LeetCode周赛】LeetCode第365场周赛
  • 响应式设计的实现方式
  • PHP 反序列化漏洞:__PHP_Incomplete_Class 与 serialize(unserialize($x)) !== $x;
  • TempleteMethod
  • 1558. 得到目标数组的最少函数调用次数
  • 子域名扫描, 后台扫描
  • 毛玻璃带有光影效果的卡片
  • 【Java】面向过程和面向对象思想||对象和类
  • 孤举者难起,众行者易趋,openGauss 5.1.0版本正式发布!
  • 软考——软件设计师中级2023年11月备考(1.计算机组成原理)
  • 前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(四)
  • 【前端】HTML5 Audio 预加载 按照队列顺序播放音频, 可以陆续往队列中加内容
  • 【单片机】13-实时时钟DS1302
  • springboot和vue:十三、VueX简介与安装与推荐视频+前端数据模拟MockJS
  • [React] Zustand状态管理库
  • 【ChatGPT】ChatGPT发展历史
  • 分布式文件存储系统Minio实战
  • 【MySQL】MySQL 官方安装包形式
  • 使用sqlmap获取数据步骤
  • [论文笔记]GLM
  • 漏洞扫描环境:win10系统用VMware Workstation打开虚拟机若干问题
  • OpenCV实现模板匹配和霍夫线检测,霍夫圆检测
  • 消息队列实现进程之间通信方式