IT点滴

我不去想是否能够成功 既然选择了远方 便只顾风雨兼程
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

Disassembly3:variable

Posted on 2018-11-09 17:15  Ady Lee  阅读(213)  评论(0编辑  收藏  举报
  • Initializer

C++ Primer上说:如果未初始化的Built-in type是定义在function外部的,那么它将自动被初始化为“0”;如果uninitialized的built-in type对象是定义在function内部的,那么它就是undefined的,那么,对它拷贝和访问就都是错误的。

观察下面这段汇编程序:

同样是变量,"int i"就没有相应的汇编代码。而当将j的值赋值给i的时候,是从内存的A1F320h地址取出的dword大小的值:

function外部的全局变量并非存储在栈空间上,而是在其它某处存放着。

  • Scope

我们可以观察下面reused的使用:

第一个将reused赋值给变量b,这里使用的是从内存某个地址中取出一个数:

这个形式的赋值可以看出使用的是全局变量,当然了,因为到这里时,函数中的局部的reused还没有定义,所以这里使用的肯定是全局的

再来看下面的int reused = 0,这里就是新定义了一个局部变量,当我们再使用reused赋值的时候,使用的就是这个局部的reused(局部的reused覆盖掉了全局的reused):

此时由于有了局部的reused的存在,如果我们再想使用全局的reused,就必须加上scope operator: