类访问冲突C ++

时间:2011-10-23 17:49:32

标签: c++builder access-violation

class Register
{
private:
        DWORD ax,dx,cx,bx; // POH
        DWORD bp,sp;

        DWORD flag, ip;
public:
        //====================================================
        Register()
        {
             ax = 0x0;
             dx = 0x0;
             cx = 0x0;
             bx = 0x0;

            bp = 0x0;
          //memset(&this->sp,0,sizeof(sp));
            sp = 0x0;

            flag = 0x0;
            ip = 0x0;
        }
        //====================================================
        ~Register()
        {
        }
        //====================================================
        void setAx(DWORD d)
        {
         ax=d;
        }
        //====================================================
        DWORD getSp()
        {
          return sp;
        }

}*PReg;

为什么函数getSp();会出现访问冲突错误?

1 个答案:

答案 0 :(得分:0)

你忘记了实例化你的课程。你已经创建了一个变量,它是一个指向类Register的指针,但你没有实例化它。

你得到的是一个空指针或指向某个随机内存位置的指针,你假设它指向你的类的实例。因此,当您尝试访问任何成员变量时,您实际上正在访问您无权访问的内存位置。

您需要做的是创建一个新的类实例:

PReg = new Register();

我可以同时建议你将变量声明从类原型中移开(我假设它存在于头文件中)。