我正在尝试从 C++ 中的外部库 Visual Studio 2010 中定义一个变量。它仅在我将它放在主函数之外时才有效。
此代码崩溃:
#include "StdAfx.h"
#include <ogdf\basic\Graph.h>
#include <ogdf\basic\graph_generators.h>
int main()
{
ogdf::Graph g;
ogdf::randomSimpleGraph(g, 10, 20);
return 0;
}
它给了我一个无法控制的异常:访问冲突。但是,如果它在 main 函数之外,它可以正常工作:
#include "StdAfx.h"
#include <ogdf\basic\Graph.h>
#include <ogdf\basic\graph_generators.h>
ogdf::Graph g;
int main()
{
ogdf::randomSimpleGraph(g, 10, 20);
return 0;
}
你有什么我该如何解决吗?我认为这是由某种链接问题引起的。
编辑:看起来问题不在于变量的初始化。当应用程序退出时,它会引发异常。
int main()
{
ogdf::Graph g; // No problem
ogdf::randomSimpleGraph(g, 10, 20); // No problem
int i; // No problem
std::cin>>i; // No problem
return 0; // Throws an exception after read i;
}
调用堆栈:
输出为:graphs.exe 中 0x0126788f 处的第一次机会异常:0xC0000005:访问冲突写入位置 0x00000000。
graphs.exe 中 0x0126788f 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000000。