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

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

目录

​C/C++内存分配的几个区域

栈区

堆区

数据段(静态区static)

代码段

static修饰局部变量

​总结


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

栈区

在执行函数时,函数内部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的集中指定,效率很高,但是分配的内存容量有效。栈区主要存放运行函数分配的局部变量函数参数返回数据返回地址等。

堆区

一般由程序员分配释放,若不释放,程序结束时可能有OS回收。

数据段(静态区static)

存放全局变量静态数据。程序结束后由系统释放

代码段

存放函数体(类成员函数和全局函数)的二进制代码。

static修饰局部变量

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

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

总结

可以根据代码跟图片更好的理解


http://www.kler.cn/a/300514.html

相关文章:

  • opencv_KDTree_搜索介绍及示例
  • 【Idea】编译Spring源码 read timeout 问题
  • 软件测试——期末复习
  • 考前64天 学习笔记 - 形成“习惯体系”进行最小启动
  • DETR论文阅读
  • 力扣动态规划-2【算法学习day.96】
  • MySQL数据库 — Explain命令
  • hadoop分布式搭建
  • 贪心算法day29|134. 加油站(理解有难度)、135. 分发糖果、860. 柠檬水找零、406. 根据身高重建队列
  • 最佳实践-模板设计模式
  • 横版闯关手游【全明星时空阿拉德】Linux手工服务端+运营后台+双app端
  • git:认识git和基本操作(1)
  • 手写Promise
  • 《实现 HTML 图片轮播效果》
  • <<编码>> 第 5 章 绕过拐弯的通信(Seeing Around Corners) 示例电路
  • 深入浅出 Ansible 自动化运维:从入门到实战
  • C++ Primer Plus(速记版)-基本语言
  • 网络安全入门教程(非常详细)从零基础入门到精通
  • 多线程:java中的实现
  • flink中slotSharingGroup() 的详解
  • MySQL索引优化与B+树【后端 14】
  • GO 闭包
  • Python | Leetcode Python题解之第396题旋转函数
  • Docker启动Mysql镜像报错问题?
  • 研究: 用于训练大型语言模型的数据集往往缺乏透明度
  • 缓存击穿问题