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相关推荐

  1. 类中static变量和成员变量

    类中static变量和普通变量的区别(一便解释了摘要中的内容) ​ 要理解标题,我们首先来看下static变量本身的特殊之处,即它存储在全局数据区.在类中的static变量也是如此. C++的内存分布 ...

  2. 谨慎Asp.net中static变量的用法

    谨慎Asp.net中static变量的用法 .Net技术 2007-01-30 22:17:37 阅读925 评论11 字号:大中小 谨慎Asp.net中static变量的用法 在.Net平台下进行C ...

  3. Java多线程中static变量的使用

    Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果? Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果?仅仅是多耗资源还是会引发异 ...

  4. iOS中 static变量与全局、局部变量的区别 !

    static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并 ...

  5. Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  6. java中静态变量的作用_Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  7. C++中static变量的初始化

    作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 在C语言中,static变量如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化.全局变 ...

  8. java中 static变量和方法到底是存在内存什么区域?

    JVM内存总体一共分为了  4个部分(stack segment.heap segment.code segment.data segment)  当我们在程序中,申明一个局部变量的时候,此变量就存放 ...

  9. Xilinx SDK中分配变量的存储地址

    问题点:使用Xilinx SDK开发 zynq,如果不注意修改堆栈大小,运行会直接卡死崩掉.因为SDK开发属于裸机程序开发了,内存需要自己管理,而带系统的由系统管理. 首先在声明变量的时候在后面增加a ...

最新文章

  1. vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别
  2. [loj6391][THUPC2018]淘米神的树(Tommy)
  3. #386. 【UNR #3】鸽子固定器
  4. (计算机组成原理)第七章输入和输出系统-第二节1:外部设备之输入和输出设备(键盘鼠标、显示器和打印机)
  5. 马士兵java教程笔记_马士兵java教程笔记4
  6. 培训协议与服务器有没有要求,上面说的是提供专业培训且规定了服务器和培训费以及违约金的问题。试用期辞职单位有没有权利追究违约金呢?- 法律快车法律咨询...
  7. ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
  8. [Error]Python虚拟环境报错 OSError: setuptools pip wheel failed with error code 2
  9. 利用VBB仿真——实现LCD+数字键盘的密码验证
  10. 数据库 索引超出了数组界限
  11. java模拟器触屏_jar模拟器触屏版
  12. 计算机网络技术毕业生实习报告_计算机*应届毕业实习报告范文
  13. 从硅谷“神秘”孵化器,看中美医疗创新差别在哪里
  14. 关于超定方程组的解算方法
  15. Ubuntu 命令行 安装 Operator Mono 字体
  16. java万年历系统的设计,基于安卓Android平台万年历系统设计与实现
  17. 什么是mysql的安装版本的_一:MySQL基本介绍及安装
  18. 制造业的业务流程管理BPM
  19. 善用 GOOGLE -- 从入门到精通
  20. (七)JMockit 的MockUp+@Mock--基础篇

热门文章

  1. 【第22章】网站安全需求分析与安全保护工程 (软考:信息安全工程师)--学习笔记
  2. C语言中如何定义字符串?
  3. php 解析收货人信息 提取 收货人 地址 电话
  4. Java Scanner的hasNext()方法
  5. eval 是做什么的?
  6. MySQL之主键约束、非空约束、唯一约束
  7. 关于向上转型和向下转型
  8. Follow your heart (189)---那些正话反说,反话正说的方向
  9. 盘点2021年晋升为Apache TLP的大数据相关项目
  10. caffe 绘制acceracy曲线 IndexError: list index out of range的解决方案