임베디드 C++ 소유권 모델 — single·shared·borrow 패턴
Owner, observer, borrower — 객체 lifetime의 명확한 책임 할당.
53개의 포스트 · 2/3 페이지
Owner, observer, borrower — 객체 lifetime의 명확한 책임 할당.
unique_ptr vs shared_ptr vs raw pointer — 임베디드의 소유권 모델 선택.
-fno-rtti 환경에서 type info 없이 다형성 — enum tag, std::variant, CRTP.
C++23의 Result type — Rust 같은 monadic 에러 처리, 예외 없이 풍부한 정보.
Result types, error chains, exception-free RAII — 실용적 에러 시스템 구축 패턴.
-fno-exceptions 환경에서 에러 처리 — error code, std::optional, std::expected.
C++17 polymorphic allocator — 같은 컨테이너 타입에 다른 메모리 출처 주입.
고정 크기 블록 + free list — 임베디드의 표준 allocator 구현.
STL allocator interface — 표준 컨테이너의 메모리 출처를 제어.
임베디드의 첫 번째 원칙 — new/malloc 없이 modern C++의 STL 같은 컨테이너 활용.
Template 제약을 명시 — SFINAE의 가독성 개선, 에러 메시지 명확화, 자체 문서화.
std::is_*, std::enable_if, SFINAE — 컴파일 타임 type 정보로 코드 분기와 검증.
Curiously Recurring Template Pattern — virtual 함수 없이 컴파일 타임 다형성. vtable 0, 간접 호출 0.
Template instantiation의 코드 bloat — 추적, 통제, 공통 부분 분리 패턴.
함수 템플릿과 클래스 템플릿 — 컴파일 타임 다형성으로 type-safe + zero-cost generic 코드.
C++20의 컴파일 타임 강제 — consteval은 함수 호출을, constinit은 변수 초기화를 컴파일 타임에 강제합니다.
컴파일 타임 sort, search, 문자열 — constexpr 알고리즘의 한계와 가능성.
컴파일 타임 계산 — 런타임 코드와 데이터를 컴파일러가 미리 만들어줍니다. -Os보다 강력한 zero-cost.
scoped_lock, unique_ptr with custom deleter, ScopedXxx, Finally — 임베디드에 자주 등장하는 RAII 표준 패턴.
Resource Acquisition Is Initialization — 자원 생명주기를 객체 생명주기에 묶는 C++의 핵심 idiom.
C++11/14/17/20/23 — 임베디드에서 어느 표준을 골라야 하나. 컴파일러 지원, 표준 라이브러리 변화, 핵심 기능 비교.
MEMORY와 SECTIONS — Flash와 RAM에 C++ 객체와 코드를 정확한 위치에 두는 법.
Reset에서 main까지 — vector table, .data 복사, .bss 초기화, __libc_init_array가 호출하는 C++ static 생성자.
C와 C++가 한 바이너리에서 살아남는 법 — name mangling, extern "C", calling convention, struct layout.