首页 > 其他 > 详细

变量在内存中的位置

时间:2019-08-17 15:27:32      阅读:96      评论:0      收藏:0      [点我收藏+]

 

全局变量与局部变量
作用域
全局变量
1、作用于所在的模块。
2、在PE结构中,全局变量位于.data节
3、通过立即数寻址。

局部变量
1、与所在函数的作用域一样。
2、所在地址为栈上。
3、通过EBP或ESP进行寻址。

 

#include "pch.h"
#include <iostream>
#define CONST 888

int gInt = 666;

int main()
{
    /*
    这就是C++中的常量折叠:指const变量(即常量)值放在编译器的符号表中,计算时编译器直接从表中取值,
    省去了访问内存的时间,从而达到了优化。

    而在此基础上加上volatile修改符,即告诉编译器该变量属于易变的,不要对此句进行优化,
    每次计算时要去内存中取数。

    这里也有个小细节:每种编译器对volatile修饰符的修饰作用效果不一致,有的就直接“不理会”
    */
    const volatile int a = 12345;
    int *p = (int *)&a;
    *p = 456;
    const char *cp = "linux";
    //*cp = "L"; 报错
    printf("a = %d\n",a);

    int lint = 555;
    printf("lint = %d ,gInt = %d\n", lint, gInt);

    std::cout << "Hello World!\n"; 
    system("pause");
}

 

变量在内存中的位置

原文:https://www.cnblogs.com/xiangtingshen/p/11368512.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!