【问题标题】:Access violation writing location 0xaaaaaaaa访问冲突写入位置 0xaaaaaaaa
【发布时间】:2012-05-17 09:55:34
【问题描述】:

这是我当前在Score.h文件中的Score类代码:-

class Score
{

protected:
long m_Scores;
long m_HighScore;
//private:

public:
Score();
~Score();
void Init();
void Update(float deltaMS);
void Render();
void Release();
void SetScore(long sc){
    m_Scores=sc;
}

long GetScore(){
    return m_Scores;
}
void SetHighScore(long sc){
    m_HighScore=sc;
}

long GetHighScore(){
    return m_HighScore;
}
void AddScore(int add);

};

每当我尝试在类本身中访问 m_Scores 时都会收到以下错误。

Access violation writing location 0xaaaaaaaa.

SetScore() 方法因此无法运行。 我知道我在做一些愚蠢的事情,但无法弄清楚。你能帮帮我吗?

【问题讨论】:

  • 如果没有使用类的代码,您的问题将无法回答。
  • 我只是在调用 SetScore() 方法。
  • 正如@sharptooth 所说,发布的代码看起来不错,但可能与使用该类的代码交互。
  • @Creator,这仍然是不够的信息。你的代码真的只是一个创建分数、调用 SetScore() 然后退出的主函数吗?
  • @Creator:在调用方法之前,您应该实例化一个对象。这样做的代码可能是错误的,这就是问题所在。

标签: c++


【解决方案1】:

您显然是通过指针访问该类,并且pointer's 位置的内存具有值0xaaaaaaaa。这看起来很像未初始化内存的值。

所以我猜你有一个Score * 变量,你没有填写一些东西。你需要做一个

  • 将其更改为Score,并使用直接成员访问(.)而不是指针间接访问(->
  • var = new Score();初始化变量,然后用free var;释放它

【讨论】:

    【解决方案2】:

    发生这种情况是因为您尝试 SetScore() 的 Score 对象已经过时,已被破坏。注意它的寿命。

    【讨论】:

    • 感谢您的帮助。我实际上使用了错误的条件来创建对象。现在已经解决了。
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 2020-09-04
    • 2012-12-05
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多