c++中static变量的存储duration
c++中static变量的存储duration
static是c++中一个常见的关键字,当修饰全局变量和局部变量时会有不同的效果,同时变量声明初始化与否对生成的二进制文件也有影响。
写了一小段代码测试这些细节。
代码如下
#include<cstdio>int gi;
int gii=1; //global int initializedstatic int si;
static int sii=3;int main(int argc,char** argv){int li;static int sli;static int slii=4;char *buf=new char[256];printf("gi %p, gii %p, si %p, sii %p,li %p,sli %p,slii %p,buf %p\n",&gi,&gii,&si,&sii,&li,&sli,&slii,buf);
}
输出如下:
E:\SoftwareDevelopByMyself\Qt\Gvim>objdump -h a.exea.exe: file format pei-i386Sections:
Idx Name Size VMA LMA File off Algn0 .text 000007f4 00401000 00401000 00000400 2**4CONTENTS, ALLOC, LOAD, READONLY, CODE, DATA1 .data 00000044 00402000 00402000 00000c00 2**5CONTENTS, ALLOC, LOAD, DATA2 .rdata 00000328 00403000 00403000 00000e00 2**2CONTENTS, ALLOC, LOAD, READONLY, DATA3 .buildid 00000035 00404000 00404000 00001200 2**2CONTENTS, ALLOC, LOAD, READONLY, DATA4 .eh_frame 0000037c 00405000 00405000 00001400 2**2CONTENTS, ALLOC, LOAD, READONLY, DATA5 .bss 00000104 00406000 00406000 00000000 2**5ALLOC6 .idata 00000294 00407000 00407000 00001800 2**2CONTENTS, ALLOC, LOAD, DATA7 .rsrc 000004e8 00408000 00408000 00001c00 2**2CONTENTS, ALLOC, LOAD, DATA8 .debug_aranges 00000178 00409000 00409000 00002200 2**0CONTENTS, READONLY, DEBUGGING9 .debug_info 00007c93 0040a000 0040a000 00002400 2**0CONTENTS, READONLY, DEBUGGING10 .debug_abbrev 00000c7c 00412000 00412000 0000a200 2**0CONTENTS, READONLY, DEBUGGING11 .debug_line 00000ed2 00413000 00413000 0000b000 2**0CONTENTS, READONLY, DEBUGGING12 .debug_str 00000136 00414000 00414000 0000c000 2**0CONTENTS, READONLY, DEBUGGING13 .debug_loc 000001a6 00415000 00415000 0000c200 2**0CONTENTS, READONLY, DEBUGGING14 .debug_ranges 00000018 00416000 00416000 0000c400 2**0CONTENTS, READONLY, DEBUGGINGE:\SoftwareDevelopByMyself\Qt\Gvim>a.exe
gi 0x406018, gii 0x402008, si 0x40601c, sii 0x40200c,li 0x28cc58,sli 0x406020,slii 0x402010,buf 0x80075f20
可知:
bss段 0406000:未初始化的全局变量,未初始化的静态全局变量,未初始化的静态局部变量。
data段 0402000:初始化的全局变量,初始化的静态全局变量,初始化的静态局部变量。局部变量 0x28cc5c,栈段。
堆区 0x80075f20。
c++中static变量的存储duration相关推荐
- 类中static变量和成员变量
类中static变量和普通变量的区别(一便解释了摘要中的内容) 要理解标题,我们首先来看下static变量本身的特殊之处,即它存储在全局数据区.在类中的static变量也是如此. C++的内存分布 ...
- 谨慎Asp.net中static变量的用法
谨慎Asp.net中static变量的用法 .Net技术 2007-01-30 22:17:37 阅读925 评论11 字号:大中小 谨慎Asp.net中static变量的用法 在.Net平台下进行C ...
- Java多线程中static变量的使用
Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果? Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果?仅仅是多耗资源还是会引发异 ...
- iOS中 static变量与全局、局部变量的区别 !
static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并 ...
- Java中static变量作用和用法详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- java中静态变量的作用_Java中static变量作用和用法详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- C++中static变量的初始化
作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 在C语言中,static变量如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化.全局变 ...
- java中 static变量和方法到底是存在内存什么区域?
JVM内存总体一共分为了 4个部分(stack segment.heap segment.code segment.data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放 ...
- Xilinx SDK中分配变量的存储地址
问题点:使用Xilinx SDK开发 zynq,如果不注意修改堆栈大小,运行会直接卡死崩掉.因为SDK开发属于裸机程序开发了,内存需要自己管理,而带系统的由系统管理. 首先在声明变量的时候在后面增加a ...
最新文章
- vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别
- [loj6391][THUPC2018]淘米神的树(Tommy)
- #386. 【UNR #3】鸽子固定器
- (计算机组成原理)第七章输入和输出系统-第二节1:外部设备之输入和输出设备(键盘鼠标、显示器和打印机)
- 马士兵java教程笔记_马士兵java教程笔记4
- 培训协议与服务器有没有要求,上面说的是提供专业培训且规定了服务器和培训费以及违约金的问题。试用期辞职单位有没有权利追究违约金呢?- 法律快车法律咨询...
- ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
- [Error]Python虚拟环境报错 OSError: setuptools pip wheel failed with error code 2
- 利用VBB仿真——实现LCD+数字键盘的密码验证
- 数据库 索引超出了数组界限
- java模拟器触屏_jar模拟器触屏版
- 计算机网络技术毕业生实习报告_计算机*应届毕业实习报告范文
- 从硅谷“神秘”孵化器,看中美医疗创新差别在哪里
- 关于超定方程组的解算方法
- Ubuntu 命令行 安装 Operator Mono 字体
- java万年历系统的设计,基于安卓Android平台万年历系统设计与实现
- 什么是mysql的安装版本的_一:MySQL基本介绍及安装
- 制造业的业务流程管理BPM
- 善用 GOOGLE -- 从入门到精通
- (七)JMockit 的MockUp+@Mock--基础篇
热门文章
- 【第22章】网站安全需求分析与安全保护工程 (软考:信息安全工程师)--学习笔记
- C语言中如何定义字符串?
- php 解析收货人信息 提取 收货人 地址 电话
- Java Scanner的hasNext()方法
- eval 是做什么的?
- MySQL之主键约束、非空约束、唯一约束
- 关于向上转型和向下转型
- Follow your heart (189)---那些正话反说,反话正说的方向
- 盘点2021年晋升为Apache TLP的大数据相关项目
- caffe 绘制acceracy曲线 IndexError: list index out of range的解决方案