CONTENTS
목차
읽음 표시는 직접 선택하며 자동 완료되지 않습니다.
- 01복잡한 선언 읽기 - 함수 포인터와 콜백 테이블
오른쪽-왼쪽 규칙으로 선언 해석, 함수 포인터 typedef, qsort 비교 함수, 명령 이름→처리 함수 디스패치 테이블
- 02다차원 배열과 포인터 배열 - 행렬과 문자열 목록을 메모리로 그리기
int a[3][4] 의 연속 배치, int (*p)[4], char *names[] 와 char names[][16] 차이, 가변 길이 행 할당과 해제
- 03정의되지 않은 동작 - 부호 있는 오버플로와 암묵 변환이 만드는 버그
UB 목록(부호 오버플로, 범위 밖 접근, 시퀀스 포인트), 정수 승격과 부호 비교 경고, -fsanitize=undefined 로 잡기, 안전한 덧셈 검사
- 04안전한 문자열 처리 - 길이를 함께 다루는 습관
strcpy/strcat/sprintf 위험, snprintf 반환값으로 잘림 감지, strncpy 의 널 종료 함정, 길이 포함 문자열 구조체, fgets 입력 처리
- 05자원 소유권과 정리 패턴 - 누가 free 하는가
소유권 규칙을 주석·이름으로 드러내기, 생성/파괴 함수 짝, goto cleanup 단일 탈출, 부분 실패 시 롤백, 이중 해제 방지
- 06전처리기 깊이 보기 - 매크로 함정과 X-매크로
괄호 누락·두 번 평가 부작용, do{}while(0), # 와 ##, X-매크로로 enum↔문자열 표, 조건부 컴파일과 기능 플래그
- 07모듈과 불투명 타입 - 헤더로 경계를 긋는 법
static 으로 숨기기, extern 선언 위치, include guard, 불투명 구조체 포인터로 구현 숨기기, 정적 라이브러리 만들기(ar)
- 08비트 연산과 바이트 순서 - 파일 형식을 직접 읽고 쓰기
플래그 비트 마스크, 시프트의 부호 함정, 고정 폭 정수 stdint.h, 엔디언 확인과 변환, 구조체를 바로 fwrite 하면 안 되는 이유와 직렬화 함수
- 09오류 처리 규약 - 반환값·errno·로그를 일관되게
반환 코드 설계(0/음수), errno 저장 시점, perror/strerror, 오류 전파와 정리 결합, assert 는 언제 쓰나
- 10파일 디스크립터와 시스템 호출 - stdio 아래층 보기
open/read/write/close, 짧은 읽기·쓰기 반복 처리, stdio 버퍼링과 섞어 쓸 때 순서 문제, strace 로 호출 보기, 원자적 파일 교체(rename)
- 11프로세스와 시그널 - fork·exec·wait 로 명령 실행하기
fork 후 메모리 복사 개념, execvp, waitpid 와 종료 상태 해석, 좀비 프로세스, SIGINT 처리와 async-signal-safe 제약
- 12스레드와 동기화 - pthread 로 경쟁 상태 재현하고 고치기
pthread_create/join, 공유 카운터 경쟁 재현, 뮤텍스, 조건 변수로 작업 큐, -fsanitize=thread, 교착 상태 피하는 잠금 순서
이 책은 Devin.KR 원고를 참조합니다. 원고의 원래 주소와 저작자 표기를 유지하며 같은 글을 다시 등록하지 않습니다. 수정된 원고는 읽기 화면에서 재검수 상태를 확인할 수 있습니다.