ARC_OD_局部变量

1、代码位置:

01127F30 >/$  6A FF         PUSH -1
01127F32  |.  68 51752201   PUSH CEGUIBas.01227551
01127F37  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
01127F3D  |.  50            PUSH EAX
01127F3E  |.  81EC B0000000 SUB ESP,0B0                              ;  ZC:大块的局部变量区域(ESPfrom0012EBA0to0012EAF0)
01127F44  |.  A1 00892E01   MOV EAX,DWORD PTR DS:[12E8900]
01127F49  |.  33C4          XOR EAX,ESP
01127F4B  |.  898424 AC0000>MOV DWORD PTR SS:[ESP+AC],EAX
01127F52  |.  55            PUSH EBP
01127F53  |.  56            PUSH ESI
01127F54  |.  57            PUSH EDI

ZC: 上面的“大块局部变量区域” ESP从0012EBA0跳到了0012EAF0,其中有大量的遗留信息,OD同样会对它们作注释 可能会提示如下内容:

  (1)、CALL的返回地址 (提示信息类似于“返回到 ????????”)

  (2)、指向偏移 (提示信息类似于“OFFSET ????????”)

  (3)、全局变量 (提示信息类似于“??模块名.????????”)

  (4)、等等

  它们不是是无效的信息,但是如果没有注意到局部变量的申请的话,就会以为 堆栈里面有函数返回等等的信息,依据这样的假的信息来 分析/跳转 的话  就可能被带到歪路上去,∴ “堆栈窗口 --> 右键 --> 反汇编窗口中跟随” 要慎用 需要确保确实是真正的函数返回 而非局部变量里面的过时信息。

2、

3、

时间: 2024-11-06 16:49:07

ARC_OD_局部变量的相关文章

函数一直无法立即退出,在等待了大约30s后才能退出(QMulitHash释放不连续的内存需要很长世间,而这样设置局部变量后又无法避免这个问题)

局部变量使用对性能的影响以及进程的堆和栈: 由于在代码中我使用了QMulitHash<QString , LHFilteVersionItem> tmp;这一局部变量来保存某一目录下的文件,由于在写测试代码期间,我利用循环模拟了50万的数据序列化后保存在文件中,在运行期间我发现读取函数耗费很长的时间,而函数里面最耗时的读取操作也只花费了很短的时间,但是函数一直无法立即退出,在等待了大约30s后才能退出,相关代码如下: [cpp] view plain copy void LHTWORKFLOW

java线程安全问题之静态变量、实例变量、局部变量

Java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如:"一个类在可以被多个线程安全调用时就是线程安全的". 此处不赘述了,首先给出静态变量.实例变量.局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟! 静态变量:线程非安全. 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的1

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

C语言之全局变量和局部变量

全局变量和局部变量的简介(tips:很重要 牢记) 全局变量:就是定义在函数外的变量 全局变量可以在任意函数中使用 生命周期:程序一启动就开辟空间,直到程序退出才回收 全局变量不允许同名 局部变量:就是定义在函数内的变量 局部变量只能在它声明的位置开始到它所在的代码块结束 生命周期:它所在的代码块结束就回收 不同的作用域里,局部变量可以同名 tips:代码例子如下 #include <stdio.h> int globeNum = 10;   //全局变量 void test1(){ prin

为什么匿名类中使用局部变量时要声明为final呢

一个方法内部有两个线程共享内部类对象的时候,这个方法的局部变量如果能被访问, 则就成为临界资源,导致程序不稳定,所以必须是final的. 反正总而言之,java就是不允许你在局部内部类里面更改所在方法的局部变量就是了 public class MyBase { public AnoClass func(final int i){                 return new AnoClass(){                         int j=i;             

c语言全局变量和局部变量问题汇总

1.局部变量是否能和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,须要使用"::" 局部变量能够与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内能够定义多个同名的局部变量,比方在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.怎样引用一个已经定义过的全局变量? 答:extern 能够用引用头文件的方式,也能够用externkeyword,假设用引用头文件方式来引用某个在头文件

c++局部变量经典举例

局部变量: 在函数内部声明的变量为局部变量,局部变量的意思即该变量只存活在该函数中,假如该函数调用结束,那么该变量的寿命也结束了. 举例: #include<iostream> using namespace std; void swap(int ,int );//两个参数变量可以省略 int main() { int x=3,y=4; cout<<"在main函数中,调用swap函数之前,x的值为"<<x<<",y的值为:&q

局部变量,全局变量,extend,static

main.c #include <stdio.h> #include "zs.h" /* 局部变量是定义在函数.代码块.函数形参列表.存储在栈中,从定义的那一行开始作用域结束释放. 全局变量:写在函数,代码块,形参列表外的变量,从定义的那一行开始一直直到文件末尾(暂时这样认为),全局变量如果没有进行初始化是0,存储在静态区中, 随着程序的结束而结束. */ /* 全局变量分为两种: 1.外部全局变量: 可以被其它文件访问的全局变量我们称之为外部全局变量(默认情况下所有的全局

成员变量和局部变量的区别

1)位置不同: 成员变量:类中方法外. 局部变量:在方法定义上或者方法定义中. 2)在内存中位置不同: 成员变量:在堆内存. 局部变量:在栈内存. 3)生命周期不同: 成员变量:随类的加载而加载,随类的对象消失而消失. 局部变量:随着方法的调用而存在,随着方法调用完毕而消失. 4)初始化值不同: 成员变量:有默认的初始化值,系统根据该成员变量的类型来给默认值. 局部变量:必须有初始化值或者是在使用这个局部变量之前而赋值,没有默认初始化值. 注意:当局部变量和成员变量名称一致,就近原则输出变量的值