访问异常地址空间

    技术2022-05-19  22

    1、堆栈从上到下依次递增,函数参数及结构体内容压栈采用倒序,局部变量压栈顺序正常,所以导致访问系统内存。

    2、全局变量和malloc在堆上需要手动处理。

     

    struct   S   { int   i; int   *   p; }; void   main() { S   s;                             //1 int   *   p   =   &s.i;       //2 p[0]   =   4;                   //3 p[1]   =   3;                   //4 s.p   =   p;                     //p的地址就是s的地址,将p的地址赋值给s.p成员s.p[1]   =   1;               //s.p成员为p指针的地址,将此地址内容置为1s.p[0]   =   2;               //s.p成员p目前的值为1,导致非法访问异常}


    最新回复(0)