본문 바로가기
C++

[C++ 실행시 에러] 처리되지 않은 예외, 액세스 위반이 발생했습니다

by juheeL 2017. 2. 7.

참고 링크 : http://playlyun.tistory.com/88


내 프로젝트 환경 : DX9 


빌드는 잘됨.


디버그모드로 실행하니 중단!


Class B가 Class A 멤버변수를 가지고 있는데, 이를 A* a;로 할지, A a;로 할지 고민을 하다가,


Class B

{

A* a; // 혹은 A a;


B()

{

a = new A; // 혹은 지우기.

}

void FuncB(void)

{

a->FuncA();// 혹은 a.FuncA();

}

}


class A

{

void FuncA();

}


포인터변수(A* a)를 정적 멤버변수(A a)로 바꾸다가 다시 돌아왔는데(A* a)


new로 동적할당하는 부분을 지워버리고(a = new A)


함수를 호출했다.(a->FuncA())


그래서 에러남.


프로젝트 크기가 작을 땐 에러가 잘 보였는데, 커지니까 이런 부분도 놓치는구나...허허... (프로젝트 작게해서 테스트 다시 해보니까 에러문구가 다르고, 작을 때가 더 명확하게 에러문구 새로 뜬다)


기본중의 기본인데, 에러는 익숙하지 않게 나서 뭐지...? 했네ㅎ



void main(void)

{

A a;

a.FuncA(); // Good


A* pa;

pa->FuncA(); // Error


A* paa = new A;

paa->FuncA(); // Good


}