c++ 内存

c++ 内存
在这里插入图片描述

内存分区
1.代码区:程序的机器指令,可以被机器直接执行。
属性:只读和共享
代码区包含什么:
在程序编译时就已经被分配好了地址,并保存在可执行文件的代码段中。当程序运行时,操作系统会将代码段的内容读入内存,并将其中的指令加载到指令缓存器(Instruction Cache)中,以供处理器执行。
代码区的分配
代码区是在程序编译时分配的。当程序编译完成后,编译器会将程序的代码生成一个二进制文件。在程序运行时,操作系统会将该二进制文件读入内存,并将代码区的内容加载到指令缓存器(Instruction Cache)中。

2.全局区:全局变量和静态变量和字符串常量的内存区
它在程序编译时就已经被分配好了地址,并保存在可执行文件的数据段中。
全局变量能够自动初始化为0和null。全局变量在载入内存时候就被初始化了,而静态变量在首次使用时才会被初始化。
在全局数据区中定义的变量可以被程序的任何部分访问,包括全局函数、局部函数和其他模块。
在程序运行期间,全局数据区中的变量始终存在于内存中,它们的生命周期与程序的运行时间相同。

3.栈区:局部变量和函数调用时的参数、返回地址
4.堆区:new和malloc创建的

在 C++ 中,内存分配可以分为静态分配和动态分配两种方式,除了new和malloc是动态的,其他都是静态的。
使用 new 和 delete 运算符或者 malloc 和 free 函数进行动态内存分配和释放。

new:都是返回地址的指针
new 的语法格式如下:
new Type; // 分配单个对象的内存空间
new Type[N]; // 分配 N 个对象的内存空间

使用new动态分配内存并初始化基础变量时,可以使用括号初始化法来将其初始化为0,如下所示:
int* p = new int();
这样分配的内存会被初始化为0。
对于内置类型,可以使用下列语句创建并初始化元素为0的数组:
int* arr = new int10; // 创建并初始化10个元素为0的int型数组
对于指针类型,可以使用下列语句创建并初始化元素为null的数组:
int** arr = new int*10; // 创建并初始化10个指向int的指针的数组,初始值均为null
delete:释放new创建的指针指向的位置
delete 的语法如下:
delete pointer; //pointer 是之前通过 new 动态申请的内存的指针。
pointer=NULL;
delete pointer[]; //可以使用 delete[] 释放整个数组。
delete & 对象。是 C++ 中用于释放动态分配的对象的内存的运算符。而不是指针的。

运行时,将代码和数据都要加载到内存中。

1.代码段(code segment)text,存储代码。只读,存储指令。
2.数据段(data segment)存放已经初始化的全局变量和静态变量。
3.BSS段(BlockStarted by System)未初始化的全局变量和静态变量,重新启动时会将指针和值初始化为0.
4.Heap堆,malloc和calloc分配的地址。
5.stack堆栈。

静态变量和全局变量除了作用域不一样,剩下的全是相似的。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/385073.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类的隐式类型转换

文章目录 前言一、隐式类型转换二、explicit关键字总结 前言 一、隐式类型转换 C 类的隐式类型转换是指当一个类定义了适当的构造函数或转换函数时,可以在需要时自动进行类型转换,而无需显式调用转换函数或构造函数。这使得代码更具灵活性和简洁性。下面…

一种简单的车辆过减速带识别方法

识别方法参考以下图片上的这篇论文第三章,有需要的自行知网下载。 一、离散冲击路面建立 我们之前已经搭建了C级路面,直接在C级路面中间某一段加上减速带就可以。这里我加的减速带,如下图所示,高30mm,凸台宽约20mm&am…

刘谦春晚魔术的数学原理

刘谦春晚魔术的数学原理 文章目录 前言魔术介绍魔术揭秘STEP 1STEP 2STEP 3STEP 4STEP 5STEP 6STEP 7 总结 前言 2024 春晚刘谦的第二个魔术很多人跟着一起做了,都觉得非常神奇。我也跟着操作了一遍,结果一眼就让我看出了背后的数学原理。下面给大家介…

自己搭建的幻兽帕鲁服务器怎么一键配置游戏参数?可视化面板调整参数

单击面板内的【调整参数】按钮,即可在下方表格中开启编辑模式。找到“死亡惩罚”配置项,并将它的值修改为:无丢失。 点击【保存】按钮,此时将弹出气泡,提示你当前操作需要在游戏服务重启后才可生效(不会…

数据结构哈希表

这里个大家用数组来模拟哈希表 法一&#xff1a;拉链法 法二&#xff1a;开放寻址法 /** Project: 11_哈希表* File Created:Sunday, January 17th 2021, 2:11:23 pm* Author: Bug-Free* Problem:AcWing 840. 模拟散列表 拉链法*/ #include <cstring> #include <iostr…

AI:126-基于深度学习的人体情绪识别与分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解

一、冯诺依曼体系结构 1、概念 &#xff08;1&#xff09;什么是冯诺伊曼体系结构&#xff1f; 数学家冯诺伊曼于 1946 年提出存储程序原理&#xff0c;把程序本身当作数据来对待&#xff0c;程序和该程序处理的数据用同样的方式储存。 冯诺伊曼理论的要点是&#xff1a;计算…

复旦TravelPlanner让大语言模型挑战旅程规划

引言&#xff1a;探索语言智能的新疆界——旅行规划 在人工智能的发展历程中&#xff0c;规划一直是核心追求之一。然而&#xff0c;由于缺乏人类水平规划所需的多种认知基础&#xff0c;早期的AI代理主要集中在受限的环境中。随着大语言模型&#xff08;LLMs&#xff09;的出…

【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

GPT4:你是故意的吧!

请问下面选项中哪个是中文&#xff1f; A.Chinese B.英文 这是一个关于语言识别的问题。我们需要分析并确定所给选项中哪个表示中文。 对于选项A.Chinese&#xff1a;这个词本身表示“中文”或“中国的”。在多种语境中&#xff0c;它经常被用来指代中国的语言&#xff0c;即中…

(三十五)大数据实战——Superset可视化平台搭建

前言 本节内容是关于Apache Superset可视化平台的搭建&#xff0c;Apache Superset是一个现代的数据探索和可视化平台 。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数据分析引擎&#xff0c;拥有丰富的图表展示形式&#xff0c;并且支持自…

C++初阶:容器(Containers)list常用接口详解

介绍完了vector类的相关内容后&#xff0c;接下来进入新的篇章&#xff0c;容器list介绍&#xff1a; 文章目录 1.list的初步介绍2.list的定义&#xff08;constructor&#xff09;3.list迭代器&#xff08; iterator &#xff09;4.string的三种遍历4.1迭代器4.2范围for循环 5…

【Vue】computed与watch

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue⛺️稳重求进&#xff0c;晒太阳 计算属性 概念&#xff1a;基于现有的数据&#xff0c;计算出来新的属性&#xff0c;依赖的数据变化&#xff0c;自动重新计算 语法&#xff1a; 声明…

C++,stl,map/multimap详解

目录 1.map的构造和赋值 2.map的大小和交换 3.map的插入和删除 4.map的查找和统计 5.map的排序 1.map的构造和赋值 #include<bits/stdc.h> using namespace std;void print(map<int,int> &mp) {for(map<int,int>::iterator it mp.begin(); it ! m…

python安装cv2失败

问题:安装cv2包失败 解决方法&#xff1a; pip install opencv-python或在Anaconda中conda install opencv-python

原神4.0.1单机版【开局满级】纯单机,无限原石材料

版本介绍 版本4.0.1稳定版【过分追新并不稳&#xff0c;合理才完美】 独家原神&#xff0c;游戏内自带剧情任务&#xff0c;完美仿官&#xff0c;一比一完美复制&#xff01; 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 修改注意 如果要进行不…

Agile Initiative, Epic, and Story/Task

Stories, also called “user stories,” are short requirements or requests written from the perspective of an end user. stories are something the team can commit to finish within a one- or two-week sprint.Epics are large bodies of work that can be broken do…

《软件方法》强化自测题-杂项题目解析01

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 杂项&#xff08;1&#xff09; 3 [ 单选题 ] 《软件方法》第1章“建模和UML”开头所引用的歌曲&#xff0c;其词曲作者还写过下列歌曲中的&#xff1a; A) 爱江山更爱美人&#…

linux信号机制[一]

目录 信号量 时序问题 原子性 什么是信号 信号如何产生 引入 信号的处理方法 常见信号 如何理解组合键变成信号呢&#xff1f; 如何理解信号被进程保存以及信号发送的本质&#xff1f; 为什么要有信号 信号怎么用&#xff1f; 样例代码 core文件有什么用呢&#…

【Java程序设计】【C00268】基于Springboot的CSGO赛事管理系统(有论文)

基于Springboot的CSGO赛事管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的赛事管理系统 本系统分为系统功能模块、管理员功能模块、参赛战队功能模块以及合作方功能模块。 系统功能模块&#xff1a;在系…