我有一些几年前写的代码。它一直运行良好,但是在最近用其他地方的一些新的、不相关的代码重建之后,它不再工作了。这是代码:
//myobject.h
...
inline CMapStringToOb* GetMap(void) {return (m_lpcMap);};
...
上面是从主应用程序访问的,如下所示:
//otherclass.cpp
...
CMapStringToOb* lpcMap = static_cast<CMyObject*>(m_lpcBaseClass)->GetMap();
...
就像我说的,这个 WAS 工作了很长时间,但它只是决定从我们最近的构建开始失败。我已经对此进行了调试,并且可以看到,在设置指针的代码中,它正确地将内存地址设置为实际值。我什至可以单步进入set函数,记下内存地址,然后移动到这个函数,让它得到0xfdfdfdfd,然后在调试器中手动获取内存地址。这会导致代码工作。现在,根据我的阅读, 0xfdfdfdfd 意味着保护字节或“无人区”,但我真的不明白这意味着什么。据说这也意味着一个错误,但我不明白如果代码以前可以工作,那怎么会发生。