위치: 학습 › 개발 (CS) › 언어 › C언어 › 메모리·구조체
규모: 포스팅 9개

포스팅

포스팅설명
가변 길이 구조체(Struct Hack)와 필러 필드 — 헤더 뒤에 매달리는 가변 payload헤더 뒤 char data[1]로 가변 페이로드 표현하기, C99 유연 배열 멤버, IPC 호환용 필러 필드
개수 필드 + 포인터의 포인터 — 동적 문자열 배열 만들고 해제하기char** 동적 문자열 배열의 2단계 할당과 역순 해제, 이중 포인터는 for문 하나·3중 포인터를 피하는 이유와 대안
구조체 패딩과 멤버 정렬 — 정렬 기준은 버스 폭이 아니라 멤버 타입 크기구조체 패딩이 생기는 이유, 멤버 순서에 따른 sizeof 차이(실측 12B vs 8B, 32B vs 16B), 정렬 기준은 버스 폭이 아니라 멤버 타입 크기, packed·패딩 쓰레기값(memcmp·해시)·_Static_assert 실무 함정
동적 할당 소유권 — caller free vs callee create·destroy 쌍caller 할당/해제, callee create·destroy 쌍, callee malloc+caller free(strdup) 세 패턴 비교, deep free vs shallow free·캡슐화·DLL 힙 경계 크래시 이유, 할당 크기 규칙(sizeof(*p)), 전역·s…
메모리 정렬(Memory Alignment)과 aligned_alloc — CPU 워드 경계와 안전한 할당 래퍼64비트 CPU의 워드 단위 메모리 접근과 Unaligned 페널티, C11 aligned_alloc 함수 속성(__wur, attribute) 해독 및 3대 안전장치 래퍼 패턴
버퍼를 구조체로 캐스팅해 읽기 — 구조체 안의 구조체 배열과 인덱스 접근바이트 버퍼를 구조체로 캐스팅 후 p->member[i].field로 접근, 배열 멤버·개수·패딩·%.Ns 주의
불투명 포인터(Opaque Pointer) — 헤더는 선언만, 구현은 숨기기불완전 타입으로 구조체 필드를 .c 파일에 숨겨 캡슐화하는 패턴
정수를 void 포인터 인자에 실어 보내기 — intptr_t 캐스팅 관용구pthread_create류 콜백에 정수 하나만 넘길 때의 캐스팅 관용구, 스레드 생성 루프 Race Condition 방지, 주소 0x3 비접근 원리(역참조 배제) 및 32/64비트 이식성
API·규격 데이터 모델을 C 구조체로 설계하는 공식 — JSON·YAML을 정적 메모리로 매핑하기REST/OpenAPI 규격의 동적 데이터 모델을 C 언어 정적 구조체로 변환하는 5대 공식(고정 버퍼, 공통 문자열 리스트, 값 내장+비트플래그, Item-List 쌍 컨테이너, Tagged Union) 및 런타임 메모리 라이프사이클