VC++ EXE 独立版存在 IDE 中不会发生的错误



我的程序有一个非常具体的错误,花了我一段时间来追踪-现在我不知道如何修复它。我的代码很长,在很多文件中,我觉得在这里发布它没有多大意义。

在IDE中,一切都运行良好,在调试和发布(运行时库分别设置为/MTd或/MT,所以我假设所有依赖项都包括在内)。

然而,当我运行独立时,我得到一个崩溃。一开始我认为这是一个依赖问题,但似乎不是。

在代码中的某个点,我通过方法调用访问一个向量:t->GetList(),其中GetList被定义为std::vector<T*> & GetList(),该方法简单地返回一个成员变量(在类中简单地定义为std::vector<T*> field)。

事实证明,如果我在IDE中运行时打印出列表的大小,我得到0(在这种情况下这是正确的答案)。

然而,当从独立运行同样的事情时,我得到的大小为467467353。

我尝试将方法声明更改为std::vector<T*> * GetList()并做return &field;并更新其余的代码,但这没有解决任何问题。

然后我尝试用指针替换成员变量field,并在构造函数中实例化新向量并在析构函数中删除它。还是没有运气

所以我做了一个简单的测试用例程序,简单地制作了一个带有向量字段的类,以及一个返回对它的引用的方法。然后在main中,我将创建一个实例变量并获得矢量并打印大小。这在vc++和独立运行时都有效——都返回零。

这快把我逼疯了,我不明白为什么我会有不同的行为。为什么独立运行方式不同,我应该如何解决这个问题?

谢谢

这实际上是我代码中的一个隐藏得很好的bug。我动态转换到错误的类型。

不知何故,当我在Windows和OSX上运行调试和发布时,它就溜了,并且在OSX上作为一个独立的。还好我找到了

最新更新