태그: C
17편
-
Zig 언어: 숨겨진 제어 흐름 없는 설계, comptime, build.zig와 C·Rust 비교
Zig가 숨겨진 제어 흐름을 없앤 설계 원칙, Allocator와 Arena로 메모리를 명시적으로 관리하는 방식, 에러 처리와 comptime, build.zig와 크로스 컴파일, C 상호 운용을 예제로 설명하고 C·C++·Rust와 비교해 장단점을 짚습니다.
-
C 언어 시리즈 #04 — 함수·스택 프레임·호출 규약(ABI)과 가변 인자
System V AMD64·Windows x64 인자 레지스터·스택 슬롯·16바이트 정렬, 프레임 포인터 생략 시 디버깅·언와인드 영향, va_list 스필 순회와 가변 인자 API의 타입 안전 결여, 인라인·심볼 가시성까지 정리합니다.
-
C 언어 시리즈 #05 — 포인터 연산·엄격 별칭(strict aliasing)·유효성
포인터 덧셈·one-past-the-end, 엄격 별칭으로 최적화가 깨지는 경로, restrict 계약, effective type·memcpy 패턴, C23 provenance 개념을 엮어 UB·-fstrict-aliasing·Sanitizer 대응까지 연결합니다.
-
C 언어 시리즈 #06 — 배열·디케이(decay)·문자열 리터럴·VLA | 실전 가이드
배열 decay·sizeof 예외·함수 매개변수에서 길이 소실, 문자열 리터럴의 읽기 전용 세그먼트, VLA가 스택 예산을 흔드는 방식과 대안(고정 버퍼·힙), UTF-8 리터럴과 다국어 처리 경계를 프로덕션 관점에서 정리합니다. 실무에서 바로 적용 가능한 5가지 핵심 패턴을 배우세요.
-
C 언어 시리즈 #07 — 구조체·공용체·비트필드·패딩과 ABI
ABI 고정 레이아웃·offsetof·_Static_assert 검증, 패딩과 캐시 가짜 공유, union active member·effective type, 비트필드 엔디안·정렬 의존과 레지스터 맵·원격 프로토콜에 enum 직접 박지 말아야 하는 이유를 연결합니다.
-
C 언어 시리즈 #08 — 전처리기 8단계·매크로·_Pragma·번역 단위 경계
ISO C 번역 8단계 중 전처리가 맡는 부분, #include 텍스트 합성과 번역 단위 경계, 함수형 매크로의 다중 평가·#/## 함정, _Pragma·include guard·조건부 컴파일로 중복 정의를 막고 헤더 의존 순서를 안정화하는 방법을 정리합니다.
-
C 언어 시리즈 #09 — 동적 메모리·단편화·할당기·Sanitizer·프로덕션 패턴
malloc/realloc 실패·누수 패턴, 힙 단편화·메타데이터, 아레나·풀·스레드 로컬 캐시 트레이드오프, calloc 의미, ASan·Valgrind·malloc_stats로 검증하는 프로덕션 워크플로를 한 흐름으로 정리합니다.
-
C 언어 시리즈 #10 — 컴파일 파이프라인·링커 심볼·정적·동적 링크
C 소스가 전처리·컴파일·어셈블·링크를 거쳐 실행 파일이 되는 과정을 따라가며, 정적 .a와 동적 .so 라이브러리를 만들고 -L·-l·rpath 링커 플래그, Makefile 자동 의존성, 미해결·중복 심볼 오류를 진단하는 법을 설명합니다.
-
C 동적 메모리 심화 — malloc 내부·정렬·단편화·커스텀 할당자·프로덕션 패턴
glibc ptmalloc과 jemalloc이 malloc/free를 어떤 자료구조로 구현하는지 살펴보고, aligned_alloc과 max_align_t 정렬 규칙, 내부·외부 단편화가 악화되는 패턴, 범프 할당자와 고정 블록 풀 설계를 설명합니다.
-
C 언어에서 버그가 생기는 자리: 메모리 레이아웃, 포인터 aliasing, UB, 링킹
C 언어의 메모리 모델·포인터·동적 할당부터 시스템 프로그래밍까지 실무 관점으로 정리합니다. C23 표준, gcc·clang 활용법, undefined behavior 함정 회피 전략을 포함합니다.
-
C 언어 시리즈 #01 — 기초와 실행 모델: 객체 표현·정렬·번역 단위
C 언어를 처음 배우는 사람을 위한 실행 모델 입문. segfault를 처음 만났을 때 무슨 일이 벌어지는지, .c 파일이 전처리·컴파일·어셈블·링크를 거쳐 실행 파일이 되는 과정, 그리고 번역 단위라는 개념을 캐주얼한 톤으로 풀어씁니다.
-
C 언어 시리즈 #02 — 타입·승격(usual arithmetic)·정수 표현과 패딩
정수 승격·통상 산술 변환으로 size_t와 int 비교가 깨지는 이유, 고정폭 정수·엔디안, 구조체 패딩과 직렬화 시 _Static_assert 검증, FENV·부동 pragma 상호작용까지 컴파일러·ABI 관점에서 정리합니다.
-
C 언어 시리즈 #03 — 제어 흐름: 분기·스위치 테이블·setjmp와 스택
분기 예측·switch 점프 테이블 휴리스틱, Duff’s device의 유지보수 비용, goto 정리 패턴과 setjmp/longjmp가 스택·VLA·비국소 점프와 충돌하는 이유를 호출 규약·C 표준 제약과 연결해 설명합니다.
-
Zig 입문: 숨은 제어 흐름 없는 설계, 명시적 Allocator, defer, comptime, build.zig
Zig 입문자를 위해 변수·Optional·Error Union 문법, 명시적 Allocator와 defer, comptime 제네릭, build.zig, 크로스컴파일과 zig cc, C 인터옵을 예제로 설명하고, 간단한 HTTP 서버 구현과 Zig를 택하거나 피해야 할 기준을 정리합니다.
-
GStreamer 실전 가이드 | 파이프라인·C/Python·gst-launch로 멀티미디어 다루기
GStreamer 1.x로 재생·인코딩·스트리밍 파이프라인을 구성하는 방법을 정리합니다. Element·Pad·Caps 개념, gst-launch-1.0, C API, Python gi 예제, Bus 메시지·GST_DEBUG까지.
-
C 언어 시리즈 목차 | 기초부터 시스템 프로그래밍까지 10편 학습 경로
C 언어의 실행 모델·타입 승격·포인터와 엄격 별칭·메모리 관리부터 전처리기·링커·빌드 파이프라인까지 10편 시리즈의 목차입니다. 편별 핵심 내용과 처음 읽는 순서, 증상별로 먼저 볼 편을 정리했습니다.
-
C static 심화 가이드 — 번역 단위·정적 초기화·TLS·inline·실무 패턴
static 지역·전역·함수를 넘어 번역 단위와 링커 심볼, 정적 초기화 순서, _Thread_local(TLS), static/extern inline 연결 규칙, 프로덕션 모듈 경계 패턴까지 정리한 C 저장 기간 심화 글입니다.