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

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

作者: 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字节的指针类型,其访问方式按作用域来分,和之前所介绍的全局,局部 以及静态的表现形式相同。

    相关文章

      网友评论

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

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