C++基础知识:C++内存分区模型,全局变量和静态变量以及常量,常量区,字符串常量和其他常量,栈区,堆区,代码区和全局区

1.C++内存分区模型

C++程序在执行时,将内存大方向划分为4个区域

代码区:存放函数体的二进制代码,由操作系统进行管理的(在编译器中所书写的代码都会存放在这个空间。)

全局区:存放全局变量静态变量以及常量

栈区:由编译器自动分配释放,存放函数的参数值,局部变量

堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

内存四区意义:
不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程(方便操作系统管理)

2.程序运行前


在程序编译后,生成了exe(在windows操作系统中)可执行程序,未执行该程序前分为两个区域

1.代码区:


存放 CPU 执行的机器指令
代码区是共享共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可代码区只读使其只读的原因是防止程序意外地修改了它的指令

2.全局区:


全局变量静态变量存放在此.


全局区还包含了常量区,字符串常量其他常量也存放在此

该区域的数据在程序结束后由操作系统释放

#include<iostream>using namespace std;// 全局变量
//在函数体外创建的变量是全局变量
int flag=0;
//这个flag就是全局变量//const 修饰的全局变量
const  int const_a=10;int main(){//    创建局部变量int a=10;
//    在函数体内创建的变量都是局部变量,这里的函数体是main//    在一个变量前面加上关键字static就是静态变量static int d=50;//常量://1.字符串常量
//    字符串指的是用双引号引起来的//    const 修饰的变量
//    1.const修饰的全局变量,const修饰的局部变量const int const_b=20;
//    上面是const修饰的局部变量system("pause");return 0;
}

 

 

3. 程序运行后


1.栈区:


由编译器自动分配释放,存放函数的参数值,同部变量等注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放 

 

注意栈区是由编译器管理开辟和释放的,
不要放回地址,因为这个是编译器管理释放的,调用完
函数后该变量就销毁了,地址也被回收了,如果返回地址,
可能访问到一些管理用的其他数据,擅自篡改可能会出现各种各样的问题

2.堆区:


由程序员分配释放,若程序员不释放,程序结束时由操作系统回收在C++中主要利用new在堆区开辟内存

#include<iostream>using namespace std;int* fn(){//利用new关键字可以将数据开辟到堆区域//指针本质也是局部变量,放在栈上,指针保存的数据是放在了堆区int*p= new int (10);return p;
}
int main(){//在堆区中开辟数据int *p=fn();cout<<*p<<endl;system("pause");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数学基础【俗说矩阵】:齐次线性方程和非齐次线性方程求解-学习笔记

一、矩阵基础知识 二元一次方程的传统解法 不论是代入消元法还是加减消元法都统称 【高斯消元法】。 齐次方程组和非齐次方程组 线性方程组的解 线性方程的向量展示 向量规则 矩阵的高斯消元和初等行变行及其规则 高斯消元规则 初等行变换 矩阵经初等行变换成阶梯矩阵&…

【Linux】线程——线程互斥的概念、锁的概念、互斥锁的使用、死锁、可重入和线程安全、线程同步、条件变量的概念和使用

文章目录 Linux线程4. 线程互斥4.1 线程互斥的概念4.2 锁的概念4.2.1 互斥锁的概念4.2.2 互斥锁的使用4.2.3 死锁4.2.4 可重入和线程安全 5. 线程同步5.1 条件变量的概念5.2 条件变量的使用 Linux线程 4. 线程互斥 我们之前使用了线程函数实现了多线程的简单计算模拟器。 可以…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是&#xff1a; 买服务器并且有公网固定…

【数据结构】深入理解Floyd最短路径算法:全面解析及Python实现

文章目录 一、Floyd-Warshall算法简介二、Floyd-Warshall算法的数学表述三、Floyd-Warshall算法的Python实现四、Floyd-Warshall算法的应用场景五、Floyd-Warshall算法的优缺点六、优化与改进七、总结 Floyd-Warshall算法是一种用于解决加权图中最短路径问题的经典算法。该算法…

基于Ubuntu2310搭建openstack高可用集群B版

openstack-ha 环境初始化安装haproxy安装keepalived数据库集群高可用rabbitmq集群高可用memcache集群配置 keystone高可用glance高可用placement高可用nova高可用neutron高可用horizon高可用 本实验使用两台节点master和node配置haproxy高可用&#xff0c;keepliaved配置主备抢…

极验设备指纹HarmonyOS 鸿蒙版SDK官方下载

近日&#xff0c;华为开发者大会&#xff08;HDC 2024&#xff09;在东莞召开。在大会开幕日的首场主题演讲中&#xff0c;华为宣布当前已有TOP5000应用成为鸿蒙原生应用&#xff0c;350&#xff0b;SDK已适配HarmonyOS NEXT版本。其中&#xff0c;极验作为其重要伙伴&#xff…

JWT令牌详细解析

JWT令牌 前言一、JWT是什么&#xff1f;二、JWT与传统CookieSession的对比三、JWT1. JWT的功能2. JWT的结构3. JWT的使用 前言 主要介绍了SpringBoot集成JWT令牌详细说明,JWT方式校验方式更加简单便捷化&#xff0c;无需通过redis缓存&#xff0c;而是直接根据token取出保存的…

解决C#读取US7ASCII字符集oracle数据库的中文乱码

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录 前言一、解决方法二、安装System.Data.OleDb连接库三…

隐藏需求缺失的4种解决技巧

在需求分析过程中&#xff0c;隐藏需求的缺失往往会造成项目范围扩张、成本增加&#xff0c;造成延期交付和风险增加等问题&#xff0c;直接影响客户满意度。而隐藏需求的挖掘和确认&#xff0c;有利于优化项目范围&#xff0c;提升产品质量&#xff0c;增强团队信心。 因此&am…

录屏工具哪款好用?精选3款,宝藏分享

“想问一下大家平时都是用哪一款录屏软件啊&#xff1f;感觉现在市面上的录屏软件特别多&#xff0c;但是却一直找不到适合自己的&#xff0c;想看一下大家的宝藏录屏工具都有哪些&#xff0c;求推荐&#xff01;” 在数字化时代的浪潮中&#xff0c;录屏工具如同一把神奇的画…

【机器学习】Scoring Model Scores: 理解、设计与优化评分模型

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Scoring Model Scores: 理解、设计与优化评分模型引言1. 评分模型的定义与重要性…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…

ns3-gym入门(三):在opengym基础上实现一个小小的demo

因为官方给的"opengym""opengym-2"这两个例子都很简单&#xff0c;所以自己改了一个demo&#xff0c;把reward-action-state相互影响的关系表现出来 一、准备工作 在ns3.35/scratch目录下创建一个文件夹&#xff1a; &#xff08;后续的运行指令后面都需要…

Excel办公技巧:制作二级联动下拉菜单

分享制作二级联动下拉菜单的方法&#xff0c;即使数据有增删&#xff0c;菜单也能自动更新&#xff01; 可以通过先定义名称&#xff0c;再结合数据验证&#xff0c;来做二级联动下拉菜单。 1. 准备数据 首先&#xff0c;我们需要准备好要进行二级联动下拉菜单的数据&#xff…

【单目3D检测】smoke(1):模型解析

SMOKE是纵目科技在2020年提出的单目3D检测新方法&#xff0c;论文展示了一种新的3D目标检测方法&#xff0c;该方法通过将单个关键点估计与回归3D变量相结合来预测每个检测到的目标3D bounding box。SMOKE延续了centernet的key-point做法&#xff0c;认为2d检测模块是多余的&am…

【经验分享】关于静态分析工具排查 Bug 的方法

文章目录 编译器的静态分析cppcheck安装 cppcheck运行 cppcheck 程序员的日常工作&#xff0c;不是摸鱼扯皮&#xff0c;就是在写 Bug。虽然这是一个梗&#xff0c;但也可以看出&#xff0c;程序员的日常一定绕不开 Bug。而花更少的时间修复软件中的 Bug&#xff0c;且不引入新…

Spring Web MVC入门(2)(请求2)

目录 1.传递JSON数据 传递JSON对象 2.获取URL中的参数PathVariable 3.上传文件RequestPart 4.获取Cookie/Session (1)获取Cookie 简洁获取Cookie (2)获取Session Sesson读取 简洁获取Session(1) 简洁获取Session(2) 5.获取Header 简洁获取Header 1.传递JSON数据 J…

Python中的数据结构:五彩斑斓的糖果盒

在Python编程的世界里&#xff0c;数据结构就像是一个个五彩斑斓的糖果盒&#xff0c;每一种糖果都有其独特的味道和形状。这些多姿多彩&#xff0c;形状和味道各异的糖果盒子包括了&#xff1a;List&#xff08;列表&#xff09;、Tuple&#xff08;元组&#xff09;、Diction…

深度学习落地实战:识别火车票信息

前言 大家好&#xff0c;我是机长 本专栏将持续收集整理市场上深度学习的相关项目&#xff0c;旨在为准备从事深度学习工作或相关科研活动的伙伴&#xff0c;储备、提升更多的实际开发经验&#xff0c;每个项目实例都可作为实际开发项目写入简历&#xff0c;且都附带完整的代…

本地多模态看图说话-llava

其中图片为bast64转码&#xff0c;方便json序列化。 其中模型llava为本地ollama运行的模型&#xff0c;如&#xff1a;ollama run llava 还有其它的模型如&#xff1a;llava-phi3&#xff0c;通过phi3微调过的版本。 实际测试下来&#xff0c;发现本地多模型的性能不佳&…