VC ++ EXE standalone存在一些在IDE

时间:2015-09-25 22:32:46

标签: visual-c++ stdvector

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

在IDE中,一切都运行正常,在Debug和Release中(运行时库分别设置为/ MTd或/ MT,因此我假设包含所有依赖项)。

然而,当我独立运行时,我遇到了崩溃。起初我认为这是一个依赖性问题,但似乎并非如此。

在代码中的某个时刻,我通过方法调用访问向量:t->GetList(),其中GetList定义为std::vector<T*> & GetList(),该方法只返回一个成员变量(简单定义为{{ 1}}在课堂上。)

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

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

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

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

所以我做了一个简单的测试用例程序,它简单地创建了一个带有向量字段的类,以及一个返回对它的引用的方法。然后在field中,我将创建一个实例变量并获取向量并打印大小。这在VC ++中既可以单独使用也可以单独使用 - 都返回零。

这让我疯了,我无法弄清楚为什么我会有不同的行为。为什么独立运行不同,我应该考虑解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

好的,所以它实际上是我的代码中一个非常隐藏的错误。我动态地转换为错误的类型。

当我在Debug和Release上运行Windows和OSX时,以及在OSX上独立运行时它不知何故。好的我找到了它。