美文网首页
七、变量在内存中的位置和访问方式

七、变量在内存中的位置和访问方式

作者: Justin_901e | 来源:发表于2019-07-15 19:39 被阅读0次

7.1 全局变量和局部变量的区别

定义全局变量: int g_nVariableType=117713190;

然后获取全局变量的内存地址:

通过调试获取全局变量所在地址 0x00421A30 ,地址中的数据为 0x07042926,转换为十进制为 117717190. 全局变量在文件中的地址定位和常量 相同,也需要减去基地址,然后查阅节表得到文件地址。本示例中基地址为0x00400000,它的全局变量对应在文件0x00021A30的偏移地址处

在访问方式 上,局部 变量的访问是通过栈指针相对间接访问,而全局变量的内存地址在全局数据中,通过栈指针无法访问到。访问全局变量和访问常量类似--都是通过立即数来访问。

7.2 局部静态变量的工作方式

局部静态变量与全局变量都保存在执行文件中的数据区中,局部静态变量会预先被作为全局变量处理,而它的初始化部分只是在做赋值操作而已。

7.3 堆变量

在C\C++中,使用malloc与new实现堆空间的申请,返回的数据便是申请的堆空间的地址。相对应的,使用free与delete完成堆空间释放,但需要申请堆空间时得到的首地址。如果这个首地址丢失将无法释放堆空间,从而导致内存泄漏。

保存堆空间首地址的变量大小为4字节的指针类型,其访问方式按作用域来分,和之前所介绍的全局,局部 以及静态的表现形式相同。

相关文章

  • 七、变量在内存中的位置和访问方式

    7.1全局变量和局部变量的区别 定义全局变量:int g_nVariableType=117713190; 然后获...

  • Java内存模型 | synchronized与volatile

    JMM Java内存模型描述了Java程序中各种变量(共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存...

  • 由浅入深Java内存模型

    JMM Java内存模型描述了Java程序中各种变量(共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存...

  • JVM08 Java内存模型是如何定义的?

    Java内存模型即内存访问规则 主内存与工作内存 在JVM中将变量存储到内存和从内存中取出变量这样的底层细节。类似...

  • Java内存模型

    定义程序中各个变量的访问规则,在虚拟机中将变量存储到内存和从内存取出变量这样的底层细节。 主内存与工作内存主内存:...

  • 成员变量与局部变量区别

    A:位置不同 成员变量:类中方法外 局部变量:在方法定义中或者方法声明上 B:内存中的位置不同 成员变量:在堆内存...

  • JAVA基础(三)

    局部变量和成员变量的区别? 在类中的位置不同:成员变量在类中方法外;局部变量在方法内或者方法声明上; 在内存中位置...

  • Java - 基础笔记

    1.变量的作用域、生命周期、内存中的位置 2.访问权限修饰符

  • C语言指针

    在C语言中,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中...

  • JVM内存模型(JMM)

    JMM描述了Java多线程对共享变量的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。 ...

网友评论

      本文标题:七、变量在内存中的位置和访问方式

      本文链接:https://www.haomeiwen.com/subject/anyokctx.html