변수와 메모리 관계 Program이 생행하여 process가 되어서 메모리에 로딩되는 순간 -> data 부분에 저장이 됩니다. 메모리는 code / data / stack 부분으로 되어 있고 code 부분은 heap 메모리를 사용하여 실행을 마치면 garbage s에 의해 소멸 됩니다. data 부분은 program이 끝나서 memory에서 upload 되는 순간 없어진다. (프로그램 꺼질때 없어지는 것) 변수 유형 선언 위치 사용 범위 메모리 생성 & 소멸 지역 변수(local 변수) 함수 내부 함수 내부에서만 사용 stack 함수가 호출될 때 생성되고 함수가 끝나면 소멸된다. 멤버 변수(instance 변수) class 멤버 변수로 선언 class 내부에서 사용되고 private이 아니면 참조 변수..
lldb (Debugger) c 코드를 검사하는 도구 Debugger 코드를 검사할 수 있는 도구 Debugging 코드에서 버그를 제거하는 것 lldb 사용하기 위해 사용하는 옵션 + 유용옵션 gcc -g: 컴파일러에게 디버깅 정보를 출력 파일에 포함하도록 지시한다. -fsanitize=address: 메모리 오류를 찾아줍니다. (-g 다음에 써주는 것이 좋다.) https://blog.ifunfactory.com/2019/07/03/address-sanitizer-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%ED%9E%99-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%A4%EB%A5%98-%EB%94%94%EB%B2%84%EA%B9%85%ED..
해당 에러는 header file에 배열을 넣어서 발생하였습니다. 즉, header file, source file이건 변수가 선언이 되면 global로 되어서 해당 header file을 include한 source file을 compile한 object file을 링크하려고 하면 중복 에러가 되는 것입니다. => include 할 때 마다 하나의 변수 이름에 대응되는 주소가 추가되는 것입니다. 해결 => 헤더파일에는 변수의 선언만 해야합니다. map.h (header file) #ifndef MAP_H # define MAP_H extern int map[24][24]; double PI = 3.14; #endif map.c (source file) #include "map.h" int map[24]..