gcc란gcc는 .c 파일을 CPU가 실행할 수 있는 파일로 번역하는 프로그램이다. gcc -Wall -g hello.c -o hello # 컴파일./hello # 실행 gcc 는 전처리 → 컴파일 → 어셈블 → 링크를 한 번에 해준다. 에러 종류를 알면 원인을 더 빨리 찾을 수 있다. 에러 종류 error: 'x' undeclared단계 : 컴파일, 문법, 선언 문제 undefined referece to 'foo' 단계 : 링크, 함수 선언만 하고 정의를 안 썼거나, 파일/라이브러리를 빠뜨렸다. gcc 옵션-o test결과물 이름을 test 로 설정한다. -o 없이 컴파일하면 결과물 이름이 a.out 이 된다. -g디버깅 정보 넣기 (gdb 쓸거면 필수) -Wall -Wextra경고 최..
malloc 과 free 는 한 쌍의 짝으로 같이 움직인다. malloc 은 언제 쓰는지?스택 변수는 크기를 컴파일할 때 정해야 한다. 실행 중에 크기가 정해지거나, 함수가 끝난 뒤에도 데이터가 살아있어야 하면 힙을 써야하는데, 그게 malloc 이다.int n;scanf("%d", &n);int arr[n]; // 크기 못 바꿈 malloc 기본형int *arr = (int *)malloc(5 * sizeof(int));5 * sizeof(int) : 필요한 바이트 수 (개수 x 한 칸 크기)(int *) : 반환값을 int 포인터로 변환int *arr : 받는 변수는 반드시 포인터 malloc 몇 개가 아니라 몇 바이트를 받는다. malloc(5) 는 5칸이 아니라 5바이트이다. 타입 *p =..
*는 자리에 따라 뜻이 다르다int *p = &x; // 1*p = 100; // 21. 선언 : p는 주소를 담는 변수다. 타입의 일부2. 사용 : p가 가리키는 그 자리에 100. 역참조 연산 동작 스택과 힙은 다른 동네다 int arr[5]; // 스택 - free 금지, 크기 변경 불가int *p = malloc(5* sizeof(int)); // 힙 - free 필수 int arr[5] 는 컴파일 시점에 크기가 박제되는 거라 나중에 늘릴 수 없다. 크기를 바꾸고 싶으면 처음부터 힙으로 잡아야 한다. malloc 으로 힙에 잡았으면 반드시 free(arr) 로 돌려줘야 한다. 배열을 함수에 넘기면 주소가 간다C 에서 배열 이름은 함수에 넘어갈 때 첫 원소의 주소로 바뀐다. f..
Docker 업데이트가 필요해서 업데이트했더니, vscode 에서 인식되지 않는 문제가 발생했다. Docker 를 재설치하면서 컨테이너 연결이 끊겼는데 vs code 상태는 남아있어서 발생하는 문제이다. Dev Containers: Reopen Floder Locally 로 로컬 상태로 강제로 돌려놓고, 다시 Reopen in Container 을 실행하니 해결되었다.