본문 바로가기

기타 IT

C++ has triggered a breakpoint 오류 Assertion failed

C++문법을 잘 알아도 코딩을 할때 디버깅을 하는 것은 쉽지 않은데요

오류가 뜨고 열심히 서칭을 해서 그이유를 찾아야 아차

생각이 들때가 많습니다.

 

has triggered a breakpoint Assertion failed 오류가 났었는데

이유를 찾는데 요놈 시간 좀 잡아먹었답니다.

 

바로 요놈

저문구들이 떳을 때 그 원인으로 자주 거론되는 것들은

라고 합니다. 무슨이야기냐 하면

heap 즉 동적할당이 관련되었다는 얘기죠

pointer bug로써 주로 이미 지워진 것을 지우려고 한다던가

아니면 이미 없는 것을 가르키려고 한다던가 할때

나타나는 에러 메세지 입니다.

 

저같은 경우에는 복사생서자에서 오류가 났었는데요 항상 name =name

name(name) 이런 형식의 복사만 신경쓰다가 함수의 파라미터로 인자가

전달되는 것도 복사 생성자가 쓰인다는 것을 까먹고 있었네요

 

보통 함수에 레퍼런스로 인자를 전달하게 되면 값이 바뀌어 버리니깐

pass by valus로 파라미터를 던져주었는데

 

이과정에서 복사생성자가 사용되어 동적할당 된것이 deep복사 생성자를 따로 만들어

주지 않아서 기본 복사생성자를 호출해온 것이 문제였습니다.