gpt4 book ai didi

C++ 函数曾经工作,现在返回 0xfdfdfdfd

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:41 25 4
gpt4 key购买 nike

我有一些几年前写的代码。它一直运行良好,但最近在其他地方使用一些新的、不相关的代码进行重建后,它不再工作了。这是代码:

//myobject.h
...
inline CMapStringToOb* GetMap(void) {return (m_lpcMap);};
...

上面的内容是从主应用程序访问的,如下所示:

//otherclass.cpp
...
CMapStringToOb* lpcMap = static_cast<CMyObject*>(m_lpcBaseClass)->GetMap();
...

就像我说的,这已经工作了很长时间,但从我们最近的构建开始它就开始失败了。我已经对此进行了调试,并且能够看到,在设置指针的代码中,它正确地将内存地址设置为实际值。我什至可以单步进入set函数,记下内存地址,然后移动到这个函数,让它获取0xfdfdfdfd,然后在调试器中手动获取内存地址。这会导致代码工作。现在,根据我的阅读,0xfdfdfdfd 表示保护字节或“无人区”,但我真的不明白它的含义。据说这也意味着一个错误的关闭,但我不明白如果代码之前工作,那怎么会发生。

最佳答案

我根据匈牙利语表示法假设您使用的是 Visual Studio。由于您确实知道保存映射指针的地址,因此在调试器中启动程序并在映射指针更改时设置数据断点(保存映射指针的内存,而不是指向的映射)。然后您会确切地发现它何时被覆盖。

关于C++ 函数曾经工作,现在返回 0xfdfdfdfd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com