준호씨의 블로그

c - EXC_BAD_ACCESS 케이스 해결 방법 정리 본문

개발이야기

c - EXC_BAD_ACCESS 케이스 해결 방법 정리

준호씨 2018. 4. 14. 15:40
반응형

맥에서 c 언어로 개발 할 때, EXC_BAD_ACCESS 가 발생하는 경우 해결책에 대한 정리해 본다.

clean

make clean && make && make install

특정 함수의 위치를 이동 시키고 나면 종종 발생하는데 그런 경우 object (확장자 o) 파일 같은 것들이 예전 정보를 가지고 있을 경우 발생 할 수 있는 거 같다. 이런 경우 그냥 clean 하고 새로 빌드 하면 된다.

include 가 빠졌는지 확인

빌드 할 때 아래와 같은 메시지를 본적이 있었다면 프로토타입 선언없이 함수를 사용하고 있을 수 있다.

something.c:164:26: warning: implicit declaration of function 'some_function' is invalid in C99 [-Wimplicit-function-declaration]
    char* from_command = some_function(...);

이런 경우 해당 함수가 선언된 header 파일을 include 해서 프로토타입을 선언 할 수 있도록 하자.

자료형을 잘 썼는지 확인. 메모리 영역 침범 이슈

컴파일 옵션에 따라 좀 달라질 수는 있겠지만 적절한 자료형을 썼는지 확인 필요하다. 8바이트 long 을 사용할 위치에 4바이트 int 로 선언 한 경우 문제가 생길 수 있다.

curl 을 사용하다가 겪은 적이 있는데 아래와 같은 코드에서 였다.

int response_code = 0; // long 으로 선언해야 된다.
...
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);

신기한건 매번 겪는건 아니고 라이브러리로 함수를 옮기고 나서 발생함. 함수 위치를 요리조리 바꿔주면 되기도 하는데 좋은 방법은 아니고 적당한 사이즈의 자료형을 제대로 사용해 주는 것이 좋다.

관련글

반응형
Comments