C++变量存储区

C++内存管理详解:各类变量的存储区域 C++变量存储区域分析摘要: C++变量根据类型和生命周期存储在5个不同内存区域: 栈区:存储局部变量、函数参数,自动分配释放,速度快但空间有限 堆区:动态分配内存(new/malloc),需手动管理,空间大但效率较低 全局/静态区:存储全局变量和静态变量,程序运行时分配,结束时释放 常量区:存储字符串常量和const全局变量,只读属性 代码区:存储程序可执行指令,只读属性 不同类型变量存储示例: 局部变量:栈区 new分配:堆区 全局变量:静态区 字符串常量:常量区 函数代码:代码区 内存管理需注意栈溢出 阅读详情
//*************** 以下数据基于VS2012 Windows8.1 ***************//

//***************************///全局有初值
int g_i = 100;													// 0x001b8000
int g_j = 200;													// 0x001b8004

//***************************///全局无初值
int g_m;															// 0x001b84a8
int g_n;															// 0x001b84ac

//分析:全局变量存储于全局静态区; 有初值的和无初值的不在一起; 无初值自动置0;
//		全局静态区向上生长; 每一位16进制代表4位2进制 所以int为16bit;

int main()
{
	const int MAXN = 1;
	//***************************///堆
	int * m = (int*)malloc(MAXN * sizeof(int));		// 0x00dd7fd8
	int * n = (int*)malloc(MAXN * sizeof(int));		// 0x00dd4c48
	int * l = (int*)malloc(MAXN * sizeof(int));		// 0x00dd6e28

	//分析: 堆中数据分布在堆区; 具体没有啥规律....

	//***************************///静态变量
	//**********///有初值
	static int s_i = 5;											// 0x001b8008
	static int s_j = 10;										// 0x001b800c

	//分析:初始化的静态数据和初始化的全局数据存放在一起;

	//**********///无初值
	static int s_m;												// 0x001b84b8
	static int s_n;												// 0x001b84bc

	//分析:未初始化的静态数据和未初始化的全局数据在一起;
	//分析:此时静态变量和全局变量地址基本一致 缺了16bit;

	//***************************///栈
	//**********///有初值
	int i = 0;													// 0x00aef7f4
	int j = 1;													// 0x00aef7e8

	//分析:自动变量存储与栈区;而且栈是向下生长的;每个int 48bit

	//**********///无初值
	int m;														// 报错
	int n;															// 报错

	//分析:未初始化的自动变量;无地址

	//***************************///字符串
	char *pstr1 = "ZYW1";									// 0x00aef7b8 -> 0x001b5858 = ZYW1
	char *pstr2 = "ZYW1";									// 0x00aef7ac -> 0x001b5858 = ZYW1
	char *pstr3 = "ZYW2";									// 0x00aef7a0 -> 0x001b5874 = ZYW2

	//分析: 字符串是一个常量数据;放在常量区; 一个char 4bit;
	//ptr在栈区,而ptr指向的量在一个常量区; 
}

解析vCard 3.0:提取电子名片中的姓名 N:LastName;FirstName;;;END:VCARD和END:VCARD标记数据块的开始和结束。N字段存储结构化姓名(分号分隔)。FN字段为直接可读的显示名称。其他字段如TELEMAIL等保存联系信息。 阅读详情

相关推荐

UE5实战:如何用Georeference插件搞定百度地图坐标转换(附完整代码)

本文详细解析了在UE5中使用Georeference插件实现百度地图坐标转换的全流程,包括BD-09到UE内部坐标的转换算法、UTM投影配置及性能优化技巧。通过完整代码示例和实战案例,帮助开发者高效解决数字孪生项目中的地理坐标转换难题。

weixin_30955617的博客 94

C/C++程序内存的各种变量存储区域和各个区域详解

C语言在内存中一共分为如下几个区域,分别是: 1. 内存栈区: 存放局部变量名;2. 内存堆区: 存放new或者malloc出来的对象;3. 常数区: 存放局部变量或者全局变量的值;4. 静态区: 用于存放全局变量或者静态变量;5. 代码区:二进制代码。 知道如上一些内存分配机制,有助于我们理解指针的概念。 C/C++不提供垃圾回收机制,因此需要对堆中的数据进行及时销毁,防止内存泄漏,使用free和delete销...

wywbzan的博客 4386

【实战指南】DBeaver EE Windows版高效破解与配置全解析

本文详细解析了DBeaver EE Windows版的高效破解与配置方法,涵盖Java环境配置、破解包部署、配置文件修改等关键步骤,并提供了性能优化和数据库连接的最佳实践。适用于需要解锁企业版高级功能的数据库开发人员,帮助提升工作效率。

weixin_28837817的博客 1902

C++中变量存储区域的解析

C++中变量的四区 内存的四个区域 • 代码区:存放函数体的二进制代码,由操作系统进行管理的 • 全局区:存放全局变量和静态变量以及常量 • 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 • 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 内存分区的意义 不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程。 变量的类型 按变量存储地址划分 全局区 变量 静态局部变量

超级霸霸强的博客 290

WVP-GB28181-Pro配置避坑指南:从零到上线全流程详解(含ZLM自动同步技巧)

本文详细解析了WVP-GB28181-Pro视频平台的配置流程,特别针对国标视频平台部署中的常见陷阱,如stream-ip/sdp-ip配置错误、ZLM自动同步问题及端口冲突等,提供了实用的解决方案和优化建议,帮助开发者快速实现从零到上线的全流程部署。

weixin_30836759的博客 93

K2P padavan固件下宽带与IPTV融合

举例说下,假如你的IPTV是拨号的,IPTV端口直接连到笔记本电脑的网口,IP是自动分配的情况下,在VLC里面是可以直接播放“rtp://239.XXX.XXX.XXX:XXXX”的,即使IPTV是DHCP模式,按道理也是可以播放的。家里很少看电视,基本上就是看看春晚,然后平时老人在家没事看看,所以就把广电的机顶盒停掉了,换了一个N1的盒子刷了CoreELEC系统,既可以通过m3u8文件看网络电视,也可以看本地的多媒体,很方便,完全满足了自己的需求。在上图的第三步中,端口设置成大于1024的端口即可。

aplsc的专栏 63万+

C++变量作用域,存储区

在C++中,存储区域可以分为:堆,栈,常数区,静态区,代码区; 堆: 栈:局部变量(定义它的函数内有效) 常数区: 静态区:全局变量(整个程序文件中有效),静态全局变量(定义它的文件中有效),静态局部变量(定义它的函数内有效,整个程序文件存在) 代码区:   全局变量:存储在静态存储区,整个程序运行区间都存在;初始化:如果没有初始化,那么自动初始化为0;作用域:整个程序运行期间。 ...

C++初学者 271

C语言 在合并编译 ( 多.c文件 ) 情况下 实现 linked list ( 链表 ) 教程 . 更新ing

写在前面  依旧是参考借鉴了 浙江大学 温老师 的视频教程,很不错,在中国大学MOOC上,强力推荐!  虽说有借鉴,但是能保证的是每一行代码都是我自己经过理解后手敲出来的,所以才来做了这部分的教程。  最后,带 * 字符是我个人觉得可以添加的功能,按理来讲是可以不看的,而且大概率是可以有更好的改进的。  PS: 文章还在更新,如果文字蓝了(有超链接),说明写完了,如果没蓝,说明我在开军舰.jpg 源代码:  这里→源代码. 第一步:前置工作  先说一下每一篇都会出现 main 函数的,stage1 只是给没

weixin_47287635的博客 526

在 C/C++ 程序中,对于函数中定义的非静态局部变量,其存储空间在 **A、栈区** 分配。

在 C/C++ 程序中,函数中定义的非静态局部变量的存储空间确实是在栈区(Stack)分配的。当函数被调用时,这些局部变量的存储空间会被分配在栈上,函数执行完毕后,这些空间会被自动释放,这是栈的自动内存管理特性。

[Blog][Domain] programb.blog.youkuaiyun.com 1234

matlab安装libsvm常见问题

matlab安装libsvm常见问题 libsvm的官网链接:LIBSVM -- A Library for Support Vector Machines.

cqujcy的博客 1535

基于MATLAB Simulink的电动汽车整车控制仿真

在本文中,我们选择了power_ElectricVehicle示例模型,该模型已经包含了电动汽车的基本组成部分,包括电机、变速器、驱动轮、电池等。例如,使用PID控制器来控制电机的转速,使用ABS控制器来控制车轮的制动力,使用转向控制器来控制车辆的转向角度,使用悬挂控制器来控制车轮的姿态等。通过建立模型和实现控制器,我们可以比较直观地了解电动汽车的工作原理和性能特点,并验证设计的控制系统在不同工况下的效果。而在电动汽车的开发中,整车控制系统是至关重要的一个组成部分,直接影响着电动汽车的性能和性价比。

qq_39605374的博客 1800

C++不同类型变量存储区

在C++中,虚拟内存分为代码段、数据段、BSS段、堆区、文件映射区以及栈区六部分。 代码段:包括只读存储区和文本区,其中只读存储区存储字符串常量,文本区存储程序的机器代码(二进制代码)。 数据段:存储程序中已初始化的全局变量和静态变量 。 bss 段:存储未初始化的全局变量和静态变量(局部+全局),以及所有被初始化为0的全局变量和静态变量。 堆区:调用new/malloc函数时在堆区动态分配内存,同时需要调用delete/free来手动释放申请的内存。 栈:使用栈空间存储函数的返回地址、参数、局部变...

qq_35293120的博客 600

Microsemi Libero系列教程(二)——新建点灯工程

前言 上一篇文章,介绍了Microsemi Libero系列教程(一)-Libero开发环境介绍,下载,安装与注册,作为嵌入式开发中的Hello World,点灯是再也基础不过的实验了,通过点灯实验,可以了解芯片GPIO的控制和开发环境IDE新建工程的流程,对于FPGA来说,每个IO口几乎一样,所以本篇文章主要学习一下如何基于Microsemi Libero集成开发环境建立一个示例工程,让一个L...

whik1194的博客 1万+

【C++学习】变量和存储区

存储区一般分为以下五种: 栈区: 由编译器在需要的时候进行分配,不需要的时候会自动清空,栈区一般比较小,对于较大的数组不应该放入栈区。 堆区: 由new分配的空间,他们的释放由程序中的语句进行操作。由delete释放,如果没有释放,就会在程序结束时自动回收。 代码区: 存放代码的二进制代码。 全局(静态)存储区: 全局变量和静态变量被分配到同一块内存中。 常量存储区: 存放的数据

小小小草儿的博客哟 566

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

静态变量存储在哪个区_cpp函数的变量的存储类别详解

变量的存储类型存储类型是变量的属性之一,C++定义了4种变量的存储类型:auto变量、static变量、register变量、extern变量。变量存储方式不同会使变量的生存期不同,生存期表示了变量存在的时间。生存期和变量作用域是从时间和空间这两个不同的角度来描述变量的特性。静态存储变量通常是在变量定义时就分配固定的存储单元并一直保持不变,直至整个程序结束。如全局变量,他们存放在静态存储区中。动态...

weixin_42514970的博客 1100

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c++全局变量和存储区分类

全局变量属于静态存储区意味着它们的存储在程序的整个生命周期内是固定的,具有较长的生命周期和全局的可见性。这种特性可以很方便地在多个函数间共享数据,但也带来了可维护性和调试上的挑战。因此,在设计程序时,应该谨慎使用全局变量,尤其是在大型项目中。

2302_76543887的博客 487

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

静态变量存储在哪个区_5.8 C++变量结束 | 输出各种变量的值

C++register寄存器变量变量除了数据类型以外,还有3种属性: 存储类别,C++允许使用auto,static,register和extern4种存储类别。作用域,指程序中可以引用该变量的区域。存储期,指变量在内存的存储期限。auto, static和register3种存储类别只能用于变量的定义语句中。auto char character1;//字符型自动变量,在函数内定义 static...

weixin_33329746的博客 289

C++静态变量是在堆区还是栈区?

C++静态变量是在堆区还是栈区? 堆区(自己一堆一堆heap地堆建起来的),由程序员自己管理的内存空间; 栈区(火车站,已

Kp0fS的草稿纸 809

C++ 全局常量 静态常量 常量存储区 只读

C++ 全局只读量

qiushangren的专栏 1503

C++存储区

C++存储区主要分为五大类型:全局变量与静态变量区、常量区、局部变量区(栈)、动态存储区(堆)、自由存储区 1.全局变量与静态变量区 存放全局变量、静态变量,程序运行结束后释放。 2.常量区 存放常量,不允许修改。 3.栈 存放局部变量、函数参数。由编译器控制,自动分配和释放。 4.堆 malloc/free在堆存储区上申请和释放内存,由人控制。 5.自由存储区 用于new/delete/delete [] 在自由存储区(是一种概念抽象,具体取决于底层实现,一般也是由malloc/fre

tormi21c的博客 899

C与C++的存储区

c++存储区 全局变量与静态变量区、常量区、局部变量区(栈)、动态存储区(堆)、自由存储区 1、全局变量与静态变量区 —》存放全局变量、静态变量,程序运行结束后释放 2、常量区(文本区) —》存放常量 3、局部变量区(栈) —》存放局部变量、函数参数。由编译器控制,自动分配和释放 4、动态存储区(堆) —》malloc/free在堆存储区上申请和释放内存,由人控制 5、自由存储区 —》new/delete/delete [] 在自由存储区(是一种概念抽象,具体取决于底层实现)上申请和释放内存,由人控制

weixin_38727229的博客 133

const变量的存储区及修改权限

转自const变量的存储区及修改权限 在帖子的最后,有这么一个很有趣的实验: [cpp] view plaincopy     const int a = 1;       int *p = const_castint*>(&a);       *p = 2;       cout      cout      cout 

Think,Make 788

C++基础——使用变量

堆存储区: 自动释放 先进后出 定义 类名 变量名 = 值;了解变量使用之前,除了知道变量的基本概念和定义之外,在c++的内存结构中,一共有五个区域,简单讲一下。还需要先了解一下关于内存存储的基本概念。

m0_73464576的博客 351

C++字符串变量、字符串常量、string变量在内存中的存储分析

C++中内存布局,内存地址:栈区>堆区>静态存储区 一、字符串常量和字符串变量 我们知道字符串常量是存储在文字常量区,也即C++中的静态存储区。 而字符串变量一般定义在栈区,当使用malloc时则定义在堆区。 char* ss = "hello world"; printf("%p\n", &ss); //字符串变量ss的存储地址(变量声明的地址) printf("%c: %p\n", ss[0], &(ss[0]));//字符串变量ss中第一个字符h的存

Magnum的博客 7020
上一篇: str函数使用
下一篇: 大小端与栈方向
zhang_yao_wu1993
博客等级 码龄12年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值