Devin.KR

심화 · 전체 목차 공개

포인터·메모리 안전·시스템 프로그래밍

선언 읽기·정의되지 않은 동작·자원 소유권부터 시스템 호출·프로세스·스레드까지, 실무 C 코드를 안전하게 쓰는 법을 도서관 대출 프로그램으로 익힌다.

이 책을 읽기 전에

《메모리 그림으로 배우는 C》 수준의 포인터·동적 메모리·구조체

공개 12/12장 · 목차 구성 2026-09-12

CONTENTS

목차

읽음 표시는 직접 선택하며 자동 완료되지 않습니다.

  1. 01
    복잡한 선언 읽기 - 함수 포인터와 콜백 테이블

    오른쪽-왼쪽 규칙으로 선언 해석, 함수 포인터 typedef, qsort 비교 함수, 명령 이름→처리 함수 디스패치 테이블

  2. 02
    다차원 배열과 포인터 배열 - 행렬과 문자열 목록을 메모리로 그리기

    int a[3][4] 의 연속 배치, int (*p)[4], char *names[] 와 char names[][16] 차이, 가변 길이 행 할당과 해제

  3. 03
    정의되지 않은 동작 - 부호 있는 오버플로와 암묵 변환이 만드는 버그

    UB 목록(부호 오버플로, 범위 밖 접근, 시퀀스 포인트), 정수 승격과 부호 비교 경고, -fsanitize=undefined 로 잡기, 안전한 덧셈 검사

  4. 04
    안전한 문자열 처리 - 길이를 함께 다루는 습관

    strcpy/strcat/sprintf 위험, snprintf 반환값으로 잘림 감지, strncpy 의 널 종료 함정, 길이 포함 문자열 구조체, fgets 입력 처리

  5. 05
    자원 소유권과 정리 패턴 - 누가 free 하는가

    소유권 규칙을 주석·이름으로 드러내기, 생성/파괴 함수 짝, goto cleanup 단일 탈출, 부분 실패 시 롤백, 이중 해제 방지

  6. 06
    전처리기 깊이 보기 - 매크로 함정과 X-매크로

    괄호 누락·두 번 평가 부작용, do{}while(0), # 와 ##, X-매크로로 enum↔문자열 표, 조건부 컴파일과 기능 플래그

  7. 07
    모듈과 불투명 타입 - 헤더로 경계를 긋는 법

    static 으로 숨기기, extern 선언 위치, include guard, 불투명 구조체 포인터로 구현 숨기기, 정적 라이브러리 만들기(ar)

  8. 08
    비트 연산과 바이트 순서 - 파일 형식을 직접 읽고 쓰기

    플래그 비트 마스크, 시프트의 부호 함정, 고정 폭 정수 stdint.h, 엔디언 확인과 변환, 구조체를 바로 fwrite 하면 안 되는 이유와 직렬화 함수

  9. 09
    오류 처리 규약 - 반환값·errno·로그를 일관되게

    반환 코드 설계(0/음수), errno 저장 시점, perror/strerror, 오류 전파와 정리 결합, assert 는 언제 쓰나

  10. 10
    파일 디스크립터와 시스템 호출 - stdio 아래층 보기

    open/read/write/close, 짧은 읽기·쓰기 반복 처리, stdio 버퍼링과 섞어 쓸 때 순서 문제, strace 로 호출 보기, 원자적 파일 교체(rename)

  11. 11
    프로세스와 시그널 - fork·exec·wait 로 명령 실행하기

    fork 후 메모리 복사 개념, execvp, waitpid 와 종료 상태 해석, 좀비 프로세스, SIGINT 처리와 async-signal-safe 제약

  12. 12
    스레드와 동기화 - pthread 로 경쟁 상태 재현하고 고치기

    pthread_create/join, 공유 카운터 경쟁 재현, 뮤텍스, 조건 변수로 작업 큐, -fsanitize=thread, 교착 상태 피하는 잠금 순서

이 책은 Devin.KR 원고를 참조합니다. 원고의 원래 주소와 저작자 표기를 유지하며 같은 글을 다시 등록하지 않습니다. 수정된 원고는 읽기 화면에서 재검수 상태를 확인할 수 있습니다.

이 책·표지의 저작권 및 출처 관련 요청