본문 바로가기

new2

동적할당 new 한 걸 delete했는데 왜 _CrtIsValidHeapPointer 에러가 날까 에러문구 : _CrtIsValidHeapPointer 구조체 안에 struct SStrunt{char* mChar;SStruct(){mChar = new char[ 10 ];}~SStruct(){delete []mChar; // Error}} 이렇게만 하고 main 함수에서 구조체 객체를 만들어서 사용하면 에러가 나지 않는다. 그럼 왜 나느냐. 저 구조체를 vector 등 STL에 넣어서 사용했더니, 저 delete []mChar; 부분에서 에러가 난다. 뭐가 문제인것인가. STL에서 clear할 때 delete를 시도하고 구조체에서도 delete 를 하려했다고 그런 에러인 것 같은데, 해결방법도 찾으면 나온다. 사용자정의함수를 추가하면 된다. 근데 STL에서 내가 new한걸 어떻게 알고 명시적으로 de.. 2017. 6. 20.
[C++ 실행시 에러] 처리되지 않은 예외, 액세스 위반이 발생했습니다 참고 링크 : 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()) 그래서 에러남. 프로젝트 크기가 작을 땐 에러가 잘 보였는.. 2017. 2. 7.