我的程序有一个非常具体的错误让我花了一些时间来追踪 - 现在我不知道如何解决它。我的代码很长,并且在很多文件中,我在这里发布它没有多大意义。
在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 ++中既可以单独使用也可以单独使用 - 都返回零。
这让我疯了,我无法弄清楚为什么我会有不同的行为。为什么独立运行不同,我应该考虑解决这个问题?
由于
答案 0 :(得分:0)
好的,所以它实际上是我的代码中一个非常隐藏的错误。我动态地转换为错误的类型。
当我在Debug和Release上运行Windows和OSX时,以及在OSX上独立运行时它不知何故。好的我找到了它。