[Android]安全第五步,看懂汇编(续)

来源:互联网 发布:spss17.0软件下载 编辑:程序博客网 时间:2024/05/06 17:33
ndkdemo0309_517.zip




我们可以看出来c2需要间接寻址,因为c2存在于堆中,而c1则不需要,直接放到sp栈中


void testClass(){
class MyTest{
public:
char * dd;
void SetX(double mx,char my, char* mz){
x= mx;
y= my;
z= mz;
f= 32.23;
}
protected:
float f;
char e;

private:
double x;
char y;
char * z;
char * dz;

};
char addda[] = "atttd";

MyTest myTest;
myTest.SetX(1.1,'2',addda);

}
在类中,其内存分布与struct一样,


上面的dword_2858其实就是0x9999999A, 0x3FF19999,不同的是因为要放到double中,参数是double类型的,所以需要放到64位中,


其中setText方法就是


在编译器中,有多少对象,就有多少个类的成员变量,即为成员变量随着类的对象生成而生成,但是方法就有一个~


void testUnion(){
typedef union Student{
int age;
float ddd;
char * monday;
char tuesday;
short dsd;
}Student;

Student * dd = (Student * )malloc(111* sizeof(Student));
dd->age = 1;
dd->dsd = 12;
(&dd[2])->age= 2;

Student ccd[2322];
ccd[1].age=2;
ccd[1].ddd=3;
(&ccd[2])->ddd=21.21;
}
共同体union的多个变量在同一个内存区域里面,


共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。
在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。
http://blog.csdn.net/haiou0/article/details/6903463


void testEnum(){
enum Days{sunday,monday,tuesday};

enum Days theDay;
theDay = (enum Days)(0);

if (sunday == (theDay)){
printf("eee");
}
}

枚举在存储过程中明显也是0,1,2,3.。。的样子。注意枚举的用法。

0 0
原创粉丝点击