C++, Visual Studio 2010에서 외부 라이브러리의 변수를 정의하려고합니다. 주 기능 외부에 배치 할 때만 작동합니다.main() 함수 내에서 변수를 정의하는 데 문제가 있습니다.
이 코드는 충돌 : 액세스 위반 :
#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;
}
그것은 나에게 unhandheld 예외를 제공합니다. 이 밖에 주요 기능을 경우 그러나, 그것은 아무 문제없이 작동합니다
#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 위치를 기록하는 액세스 위반입니다.
아마도 전역 변수는 0으로 초기화되는 반면, 지역 변수에는 불확정 값이있을 수 있습니다.국지적으로 선언 할 때'g'를 명시 적으로 제로 - 초기화하면 어떻게 될까요? –
@ JoachimPileborg :하지만 ogdf :: Graph는 클래스이며 생성자가 초기화 작업을 수행합니다. 설명서는 [here]입니다 (http://www.ogdf.net/doc-ogdf/classogdf_1_1_graph.html) –
또한 스택 덤프를 게시 할 수 있습니까? 흥미로운 부분은 ** 어디에서 ** 예외가 발생했는지, 그리고 어떤 주소 때문인지. – Flovdis