CPP-存储区域
CPP支持手动开辟和释放内存,所以对于内存的理解非常重要!
在C++中,内存存储通常可以大致分为几个区域,这些区域根据存储的数据类型、生命周期和作用域来划分。这些区域主要包括:
-
代码区(Code Segment/Text Segment):
-
存储程序执行代码(即机器指令)的内存区域。这部分内存是共享的,只读的,且在程序执行期间不会改变。
-
举例说明:当你编译一个C++程序时,所有的函数定义、控制结构等都会被转换成机器指令,并存储在代码区。
-
-
全局/静态存储区(Global/Static Storage Area):
-
存储全局变量和静态变量的内存区域。这些变量在程序的整个运行期间都存在,但它们的可见性和生命周期取决于声明它们的作用域。
-
举例说明:全局变量(在函数外部声明的变量)和静态变量(使用static关键字声明的变量,无论是在函数内部还是外部)都会存储在这个区域。
-
-
栈区(Stack Segment):
-
存储局部变量、函数参数、返回地址等的内存区域。栈是一种后进先出(LIFO)的数据结构,用于存储函数调用和自动变量。
-
举例说明:在函数内部声明的变量(不包括静态变量)通常存储在栈上。当函数被调用时,其参数和局部变量会被推入栈中;当函数返回时,这些变量会从栈中弹出,其占用的内存也随之释放。
-
-
堆区(Heap Segment):
-
由程序员通过动态内存分配函数(如new和malloc)分配的内存区域。堆区的内存分配和释放是手动的,因此程序员需要负责管理内存,以避免内存泄漏或野指针等问题。
-
举例说明:当你使用new操作符在C++中动态分配一个对象或数组时,分配的内存就来自堆区。同样,使用delete操作符可以释放堆区中的内存。
-
堆和栈的大小并不是越大越好,需要根据实际需求合理配置。
-
有效管理堆内存和避免栈溢出是提高程序性能和稳定性的关键。
-
使用现代C++特性(如智能指针)可以帮助更好地管理内存。
-
-
常量区(Constant Area):
-
存储常量(如字符串常量、const修饰的全局变量等)的内存区域。这部分内存也是只读的,且通常在程序执行期间不会改变。
-
举例说明:在C++中,使用双引号括起来的字符串字面量通常存储在常量区。此外,使用const关键字声明的全局变量,如果其值在编译时就已确定,也可能存储在常量区。
-
相关文章:
CPP-存储区域
CPP支持手动开辟和释放内存,所以对于内存的理解非常重要! 在C中,内存存储通常可以大致分为几个区域,这些区域根据存储的数据类型、生命周期和作用域来划分。这些区域主要包括: 代码区(Code Segment/Text S…...
9.中断系统、EXTI外部中断
中断系统原理 中断 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一,所以本节我们就借助外部中断来学习一下中断系统。在以后学习其它外设的时候,也是会经常和中断打交道的。 中断:在主程序运行过程中…...
新增文章功能
总说 过程参考黑马程序员SpringBoot3Vue3全套视频教程,springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 之前又偷懒几天。回老家没事干,玩也玩不好,一玩老是被家里人说。写代码吧还是,他们都看不懂&a…...
《HelloGitHub》第 106 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
使用Ollama 在Ubuntu运行deepseek大模型:以DeepSeek-coder为例
DeepSeek大模型这几天冲上热搜啦! 咱们来亲身感受下DeepSeek模型的魅力吧! 整个操作流程非常简单方便,只需要2步,先安装Ollama,然后执行大模型即可。 安装Ollama 在Ubuntu下安装Ollama非常简单,直接sna…...
ROS应用之SwarmSim在ROS 中的协同路径规划
SwarmSim 在 ROS 中的协同路径规划 前言 在多机器人系统(Multi-Robot Systems, MRS)中,SwarmSim 是一个常用的模拟工具,可以对多机器人进行仿真以实现复杂任务的协同。除了任务分配逻辑以外,SwarmSim 在协同路径规划方…...
ARM64平台Flutter环境搭建
ARM64平台Flutter环境搭建 Flutter简介问题背景搭建步骤1. 安装ARM64 Android Studio2. 安装Oracle的JDK3. 安装 Dart和 Flutter 开发插件4. 安装 Android SDK5. 安装 Flutter SDK6. 同意 Android 条款7. 运行 Flutter 示例项目8. 修正 aapt2 报错9. 修正 CMake 报错10. 修正 N…...
Maven运行任何命令都报错“Internal error: java.lang.ArrayIndexOutOfBoundsException”
今天遇到一个奇怪的问题,在maven工程下运行任何mvn命令都报“Internal error: java.lang.ArrayIndexOutOfBoundsException”错误,具体错误如下: $ mvn install [INFO] Scanning for projects... [ERROR] Internal error: java.lang.ArrayInd…...
doris: MAP数据类型
MAP<K, V> 表示由K, V类型元素组成的 map,不能作为 key 列使用。 目前支持在 Duplicate,Unique 模型的表中使用。 K, V 支持的类型有: BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DECIMALV3, DAT…...
Gurobi基础语法之 LinExpr 类
优化问题中普遍出现的一种类型的约束就是线性约束,线性约束形如,Gurobi 中设计了一个 LinExpr 类来创建线性表达式。 当 i 的取值范围较小的时候,可以直接将这个线性表达式写出来,作为 addConstr 的参数,以此方便的建立…...
《Java核心技术 卷II》日期和时间API的时间线
日期和时间API Java1.0的Date类过于简单,大部分被弃用。 Java1.1引入Calendar类,但没有处理诸如闰秒之类的问题。 Java 8引入java.time.API,修正过去缺陷。 时间线 1967年,铯133原子的特性推导出了秒的精确定义。之后由原子钟网络…...
文献阅读 250128-Tropical forests are approaching critical temperature thresholds
Tropical forests are approaching critical temperature thresholds 来自 <Tropical forests are approaching critical temperature thresholds | Nature> 热带森林正在接近临界温度阈值 ## Abstract: The critical temperature beyond which photosynthetic machinery…...
Deepseek的RL算法GRPO解读
在本文中,我们将深入探讨Deepseek采用的策略优化方法GRPO,并顺带介绍一些强化学习(Reinforcement Learning, RL)的基础知识,包括PPO等关键概念。 策略函数(policy) 在强化学习中, a…...
Linux 如何使用fdisk进行磁盘相关的操作
简介 fdisk 命令是 Linux 中用于管理磁盘分区的强大文本实用程序。它可以创建、删除、调整大小和修改硬盘上的分区。 基本语法 fdisk [options] <device> <device>:要管理的磁盘,例如 /dev/sda、/dev/nvme0n1 或 /dev/vda 示例用法 列…...
智能客服系统:结合 AI 模型与数据库实现对话与知识检索
智能客服系统在现代企业中起着至关重要的作用。通过结合 生成式 AI 模型 和 向量数据库,可以构建一个能够高效回答用户问题、支持知识检索并实现对话连续性的智能客服系统。 本文将详细讲解如何设计并实现一个基于 Spring AI 的智能客服系统。 1. 系统架构设计 智…...
网易Android开发面试题200道及参考答案 (下)
说明原码、反码、补码的概念 原码:是一种简单的机器数表示法。对于有符号数,最高位为符号位,0 表示正数,1 表示负数,其余位表示数值的绝对值。比如,对于 8 位二进制数,+5 的原码是 00000101,-5 的原码是 10000101。原码的优点是直观,容易理解,但在进行加减法运算时,…...
《哈佛家训》
《哈佛家训》是一本以教育为主题的书籍,旨在通过一系列富有哲理的故事和案例,传递积极的人生观、价值观和教育理念。虽然它并非直接由哈佛大学官方出版,但其内容深受读者喜爱,尤其是在家庭教育和个人成长领域。 以下是《哈佛家训…...
为AI聊天工具添加一个知识系统 之76 详细设计之17 正则表达式 之4 正则表达式模板
Q712、三“化” (使用三种不同的定义方法:规定定义法 -线性回归/内涵定义法--一阶迭代/外延定义法--单调递归) 整体形成 一个双人零和 的局面 <Class()外延式, Type()内涵式> Method()规定式。给出 问题“law 是什么”的三种答案&#…...
面试被问的一些问题汇总(持续更新)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
WS2812 梳理和颜色表示方法的对比:RGB和HSV
WS2812 WS2812是一种可编程的LED灯,具有RGB显示效果,可显示的颜色数量为2^24。 常用颜色表示方法 表示方法: RGB 表示 加法混色原理:RGB 颜色模型基于加法混色原理,将红(Red)、绿(…...
掌握这四大趋势,让你的AI Agent真正“能干活”!CSDN收藏必备指南
本文深入探讨了企业级AI Agent的四大核心趋势:MCP协议实现可扩展集成、GraphRAG提升回答一致性、AgentDevOps确保行为质量与推理链路稳定性、RaaS模式实现结果计费。文章指出,这些趋势共同推动AI Agent从“可用”到“好用”的跨越,并提供了实…...
Kaggle竞赛技能加速器:从特征工程到模型集成的系统化实战指南
1. 项目概述:一个为Kaggle竞赛量身定制的技能加速器如果你在数据科学竞赛的圈子里待过一阵子,大概率听说过Kaggle。这个平台就像一个全球数据科学家的“奥林匹克竞技场”,从预测房价到识别癌细胞,各种现实世界的问题被包装成竞赛&…...
多智能体协作框架Agentset:从原理到实战构建AI团队
1. 项目概述:当AI智能体开始“组队打怪”最近在AI应用开发圈里,一个词的热度持续攀升:智能体(Agent)。如果说大语言模型(LLM)是学会了“思考”的大脑,那么智能体就是具备了“感知-决…...
告别“模板感”:打造高转化企业官网的全流程指南
在互联网流量红利见顶的今天,企业官网早已不再是简单的“网络名片”。面对同质化严重的模板网站,用户早已审美疲劳。一个真正有价值的网站,不仅要颜值在线,更要有清晰的定位和严密的逻辑支撑。它既是品牌形象的门面,更…...
从零打造智能互动魔法杖:嵌入式系统与创客DIY全流程解析
1. 项目概述:打造你的专属互动魔法杖几年前,我痴迷于各种漫展和角色扮演活动,总想为自己扮演的角色制作一件独一无二、能真正“发光发热”的道具。市面上能买到的发光道具要么太玩具感,要么价格高昂且功能单一。于是,我…...
正交设计实战指南:从理论到最优方案验证
1. 正交设计入门:从概念到实战价值 第一次接触正交设计是在五年前的一个电机工艺优化项目上。当时面对12个关键参数、每个参数4-5个水平的选择困境,如果做全面实验需要3125组数据,而项目周期只允许做50组实验。正是正交设计让我们用36组实验…...
VSCode 自动生成 Doxygen 格式注释
1. 插件下载 Visual Studio Code 上快捷生成 doxygen 格式注释需要使用插件,推荐插件:cschlosser.doxdocgen,插件名全称 :Doxygen Document Generator,如下图 插件下载地址:Doxygen Documentation Generat…...
国产信创电脑是什么意思?为什么政府和企业都在用?
国产信创电脑——这个名词虽然听起来有些陌生,但它正在深刻影响着我们的工作和生活。从政府采购到企业信息化方案,再到科技媒体的报道,“国产信创电脑”已经成为了关键词之一。那么,它究竟是什么?为什么如此重要&#…...
超大规模云服务外计算资源交易:虽有风险但概念已验证,或成新资源获取选项
经济合理性这一趋势积极面易理解。一是价格,有多余计算能力的非超大规模云服务提供商成本结构等与主要供应商不同,闲置资源或低价出售,对控制成本企业重要。二是效率,利用已有计算能力满足需求,无需新建数据中心等&…...
《魔兽世界》怀旧服:纳克萨玛斯教官拉苏维奥斯战术详解与实战心得
1. 教官拉苏维奥斯战斗机制解析 教官拉苏维奥斯作为纳克萨玛斯军事区的守门BOSS,其战斗核心在于学员控制循环与仇恨管理的双重考验。这个BOSS战最特别的地方在于,你需要同时应对教官本体的高伤害和四名学员的协同作战。很多团队第一次开荒时容易忽略学员…...
