Devin.KR

기본 · 전체 목차 공개

메모리 그림으로 배우는 C

값이 몇 바이트이고 스택·힙·정적 영역 중 어디에 사는지를 글자 그림으로 그리며, 자료형·포인터·동적 메모리·구조체 배치·파일 입출력·디버깅 도구까지 실제로 컴파일한 예제로 익히는 C 입문입니다.

이 책을 읽기 전에

터미널에서 명령을 실행해 본 경험을 권합니다. 다른 언어로 변수와 조건문을 써 봤다면 더 빠르게 읽을 수 있습니다.

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

CONTENTS

목차

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

  1. 01
    C 컴파일·링크·실행 - 전처리 오브젝트 파일과 링크 오류 읽기 (C 기초 1장)

    소스 파일이 실행 파일이 되는 전처리·컴파일·링크 단계를 나눠 실행하고, 선언 누락과 정의 누락 오류를 구분하며 프로그램의 메모리 영역을 그린다.

  2. 02
    C 자료형과 크기 - sizeof 바이트 순서 부호와 오버플로 (C 기초 2장)

    sizeof와 limits.h로 자료형 크기를 재고, 정수의 바이트를 직접 찍어 엔디언을 확인하며, 부호 없는 순환과 부호 있는 오버플로를 UBSan으로 구분한다.

  3. 03
    C 연산자와 형 변환 함정 - 정수 나눗셈 승격 부호 비교 우선순위 (C 기초 3장)

    정수 나눗셈, 정수 승격과 잘림, 부호가 다른 비교, 비트 연산 우선순위, 부동소수 절삭이 결과를 조용히 틀리게 만드는 순간을 경고와 실행 결과로 본다.

  4. 04
    C 제어문 - if switch 반복문과 컴파일러가 잡아 주는 실수 (C 기초 4장)

    if 사슬과 switch, 세 가지 반복문과 break·continue를 추적 표로 익히고, 대입·비교 혼동과 빈 본문, 빠진 break를 컴파일러 경고로 잡는다.

  5. 05
    C 함수와 호출 스택 - 값 전달 스택 프레임 static 지역 변수 (C 기초 5장)

    인자가 복사되는 값 전달, 재귀 호출마다 쌓이는 스택 프레임을 주소 차이로 측정하고, static 지역 변수의 수명과 지역 변수 주소 반환의 위험을 본다.

  6. 06
    C 배열과 문자열 - 연속 메모리 널 종료와 안전한 복사 (C 기초 6장)

    배열의 연속 배치와 함수로 넘길 때 사라지는 크기, 널 종료 문자열과 UTF-8 바이트, snprintf 잘림 검사와 범위 밖 접근의 UBSan 보고를 확인한다.

  7. 07
    C 포인터 기초 - 주소와 역참조 출력 매개변수 NULL 검사 (C 기초 7장)

    주소를 담는 변수인 포인터를 그림으로 이해하고, swap과 출력 매개변수 패턴을 만들며, NULL과 초기화하지 않은 포인터가 일으키는 실패를 직접 본다.

  8. 08
    C 포인터와 배열 - 포인터 연산 끝 포인터 2차원 배열 const (C 기초 8장)

    포인터 연산이 자료형 크기 단위로 움직이는 것을 재고, 인덱스와 포인터 식의 관계, 끝 포인터, 2차원 배열 배치, const 포인터의 두 가지 뜻을 익힌다.

  9. 09
    C 동적 메모리 - malloc realloc free 와 누수 이중 해제 찾기 (C 기초 9장)

    힙에서 빌리고 돌려주는 메모리로 늘어나는 배열을 만들고, 누수·해제 후 사용·이중 해제를 실행 결과와 clang 정적 분석기로 찾는다.

  10. 10
    C 구조체와 메모리 배치 - offsetof 패딩 정렬과 필드 순서 (C 기초 10장)

    구조체의 필드 오프셋과 패딩을 offsetof와 -Wpadded로 측정하고, 필드 순서로 크기를 줄이며, 구조체 복사와 포인터 전달의 차이를 본다.

  11. 11
    C 파일 입출력 - fopen fgets sscanf 오류 처리와 바이너리 저장 (C 기초 11장)

    텍스트 CSV를 한 줄씩 안전하게 읽어 잘못된 줄을 건너뛰고, 구조체를 바이너리로 저장한 뒤 od로 바이트를 확인하며 엔디언·패딩 이식성 문제를 짚는다.

  12. 12
    C 디버깅 도구 - 컴파일러 경고 UBSan ASan 정적 분석 lldb gdb (C 기초 12장)

    버그 세 개가 숨은 함수를 컴파일러 경고, lldb 조건부 중단점, UBSan으로 차례로 잡고, 정적 분석기와 AddressSanitizer의 역할과 한계를 정리한다.

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

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