本帖最后由 xiaoyuanyuan2009 于 2012-08-28 17:39:17 编辑

解决方案 »

  1.   

    001614B0  push        ebp  
    001614B1  mov         ebp,esp 
    保存堆栈环境
    001614B3  sub         esp,0D4h 
    分配该过程使用的局部变量空间
    001614B9  push        ebx  
    001614BA  push        esi  
    001614BB  push        edi  
    001614BC  lea         edi,[ebp-0D4h] 
    001614C2  mov         ecx,35h 
    001614C7  mov         eax,0CCCCCCCCh 
    001614CC  rep stos    dword ptr es:[edi] 
    用CC(int 3)填充你的局部变量,也就是你的结构体对象,这是在debug版中防止你非法访问的一个方法
    后面不用介绍了吧
    你浮上去吼出来的是CC填充后的结果,看你断点位置,你的赋值操作还没执行呢,怎么让你结构体有你要填充的数据?对吧。
      

  2.   

    001614B0  push        ebp  
    001614B1  mov         ebp,esp 
    001614B3  sub         esp,0D4h 
    001614B9  push        ebx  
    001614BA  push        esi  
    001614BB  push        edi  //以上都是在保存下刚刚进入堆栈的寄存器值
    001614BC  lea         edi,[ebp-0D4h] 
    001614C2  mov         ecx,35h 
    001614C7  mov         eax,0CCCCCCCCh 
    001614CC  rep stos    dword ptr es:[edi] //初始化结构体
    p在哪里?
    p就代表了结构体的首地址