최근 응용 프로그램을 개발하는 동안 매우 이상한 segfault가 발생했습니다. 기본적으로, 내 구조체 중 하나에 다른 변수를 추가하면 명백한 이유없이 실행시 segfault가 발생합니다. 이 변수를 제거하면 즉시 문제가 해결됩니다. 다음과 같이 구조체는 다음과 같습니다구조체 내부에서 변수를 선언 할 때 분할 오류가 발생했습니다.
typedef struct Note {
char cNote;
unsigned int uiDuration;
unsigned int uiVelocity;
};
마자 구조체에 어디서든
long lStartTime;
변수를 추가, 코드는 정상적으로 컴파일하지만 세그먼트 오류가 발생합니다. GDB의 역 추적 (backtrace)은 내가 사용하지 않는 일부 WIN 메소드에서 사라졌습니다.
아이디어가 있으십니까?
감사합니다.
어딘가에 정의되지 않은 동작이 있습니다. 이 멤버를 추가하는 것만으로 더 분명 해지고 있습니다. 수동 메모리 관리 나 배열 접근과 관련된'Note'와 관련된 일을하십니까? 거기서보기 시작하십시오. –
Joseph의 의견에 약간의 설명을 덧붙이면, 어떤 코드는 메모리 관리 나 배열 접근에 문제가있는 것은 아니지만 'Note'와는 아무런 관계가 없습니다. 정의되지 않은 동작의 즐거움 중 하나는 완전히 관련없는 코드를 편집 할 때 증상이 변경 될 수 있다는 것입니다. – Peter