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

C++ 内存分布情况

 个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

所属栏目:C++知识点的补充_Jason_from_China的博客-CSDN博客

概念概述(主要存放的内容)

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

 

二、堆区 (heap)
内存映射段是高效的 I/O 映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux 如果没学到这块,现在只需要了解一下)。
一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS 回收。分配方式类似于链表。
主要存放的是:动态分配的对象,大型数据结构,需要长期存在的数据,实现动态数据结构

 

三、数据段 (静态区)
堆用于程序运行时动态内存分配,堆是可以上增长的。
主要存放的是:(static) 存放全局变量、静态数据。程序结束后由系统释放。

 

四、代码段
代码段 -- 可执行的代码 / 只读常量。
主要存放的是:存放函数体(类成员函数和全局函数)的二进制代码

五、对比观察图

指针在内存里面的存放

一、局部指针变量 (存放在栈区)
在函数内部定义的指针变量,如果只是指向局部变量或者作为临时用途,通常存放在栈区。例如在某个函数内部定义一个指针指向另一个局部变量:

二、全局指针变量 (存放在静态存储区)
如果定义的是全局指针变量,那么它存放在静态存储区。

三、动态分配的指针 (存放在堆区)
通过动态内存分配函数 (如 malloc、calloc、realloc 等) 分配的内存空间的指针存放在堆区。 

题目精讲

题目

图解

精讲


http://www.mrgr.cn/news/50269.html

相关文章:

  • 空间智能技术赋能CIM平台,为数字住建插上翅膀
  • Exporter for Unreal to Unity 2024(Unreal到Unity的导出器)
  • [Linux] 层层深入理解文件系统——(3)磁盘组织存储的文件
  • R语言统计分析——马赛克图
  • 【玩转 JS 函数式编程_013】4.1 JavaScript 纯函数的相关概念(中):函数副作用的几种具体表现
  • Linux 文件系统结构深入解析
  • 241014-绿联UGOSPro-通过虚拟机访问主机的用户目录及文件夹
  • 【Python爬虫实战】正则:多字符匹配、开头与结尾定位、分组技术详解
  • 使用 KVM 在 Xubuntu 上创建 Windows 10 虚拟机
  • macOS Sequoia运行缓慢的原因及解决方法
  • 全国自动化考研,自控专业课难度排行榜 | 第①期:江浙沪皖地区
  • STM32Cube高效开发教程<高级篇><FreeRTOS>(七)-----进程间通信与消息队列
  • Java生成图片_基于Spring AI
  • 【AI必备数学基础——线性代数】Numpy 库创建的矩阵与 C 语言创建的异同
  • COD深度学习模型设计中,可以将各个模块归为这四大类。
  • 1.centos 镜像
  • x-file-storage:一款强大的文件聚合存储解决方案
  • SAP S/4 HANA 销售返利
  • 我作为TypeScript开发人员是如何学习Rust的
  • React路由 基本使用 嵌套路由 动态路由 获取路由参数 异步路由 根据配置文件来生成路由