블로그
-
C++ 문자열 파싱이 병목일 때: stringstream·getline 대신 string_view 제로카피, 벤치마크
입력은 빨리 받았는데 split 이후 시간 초과가 나는 상황을 두고 stringstream·getline·find+substr·strtok·regex 방식의 차이를 비교합니다. string_view 제로카피 파싱, 따옴표 필드를 지원하는 CSV 파서, string_view 댕글링 같은 버그도 다룹니다.
-
C++ 가상 함수와 vtable: 호출 비용, Devirtualization, CRTP 대안
가상 함수 호출이 vtable과 vptr을 거쳐 결정되는 과정을 메모리 레이아웃과 다이어그램으로 설명하고, 가상 소멸자가 없을 때 생기는 문제를 코드로 보여줍니다. 기본 인자, 생성자 안 가상 호출, 객체 슬라이싱 같은 실수와 devirtualization·CRTP 대안도 다룹니다.
-
C++ shared_ptr 순환 참조와 weak_ptr: 부모-자식·옵저버·그래프·캐시에서 끊는 법
shared_ptr끼리 서로를 가리켜 참조 카운트가 0이 되지 않는 순환 참조를 캐릭터-길드, 부모-자식 트리, 옵저버, 그래프, 리소스 캐시 예제로 재현하고 weak_ptr로 끊는 방법을 보여줍니다. lock()과 expired()의 올바른 사용, enable_shared_from_this 실수, 누수 진단 방법도 다룹니다.
-
C++ Lock-Free 자료구조: CAS로 스택·큐 만들기, 메모리 순서, ABA 문제와 Hazard Pointer
C++ Lock-Free 프로그래밍 정리. 원자 연산과 CAS, Lock-Free 스택과 큐 구현, memory_order 선택, ABA 문제와 Hazard Pointer 해법, 자주 나는 에러와 락 기반 대비 성능을 다룹니다.
-
C++ 현대적인 GUI: Dear ImGui로 디버깅 툴·대시보드 만들기
콘솔 출력만 보던 프로그램에 Dear ImGui로 디버깅 창을 띄우는 방법을 즉시 모드 개념부터 설명하고, GLFW + OpenGL 백엔드 연동과 CMake 빌드를 전체 예제로 보여줍니다. 모니터링 대시보드와 Begin/End 불일치, 한글 깨짐 문제도 다룹니다.
-
Qt로 C++ 첫 GUI 만들기: CMake 프로젝트, 위젯과 레이아웃, 시그널과 슬롯
C++로 창을 띄우고 버튼을 넣는 첫 단계를 Qt와 CMake로 밟아 봅니다. 레이아웃 배치, 람다와 멤버 함수로 시그널·슬롯 연결, Qt5와 Qt6 문법 차이를 예제로 설명하고 Could not find Qt6, vtable 링크 에러, 슬롯이 호출되지 않는 문제도 다룹니다.
-
C++23에서 실제로 쓸 기능: std::expected, mdspan, deducing this, auto(x)
C++23 주요 기능 정리. 예외 없이 에러를 다루는 std::expected, 다차원 배열 뷰 mdspan, CRTP를 대체하는 deducing this, auto(x) decay-copy, assume 속성과 C++20/17에서의 마이그레이션을 다룹니다.
-
Windows에서만 파일을 못 찾을 때: std::filesystem 경로 연산, 디렉터리 순회, 권한
Linux·macOS에선 되는데 Windows에서만 파일을 못 찾는 문제에서 출발해 std::filesystem을 정리합니다. 경로 연산, 디렉터리 순회, 파일 복사·이동·삭제, 권한, 자주 나는 에러를 다룹니다.
-
const·noexcept·[[nodiscard]]로 C++ 인터페이스 의도 명확히 하기
const 없이 넘긴 설정이 어딘가에서 바뀌거나 init() 실패를 무시하는 문제를 const correctness, noexcept, [[nodiscard]]로 막는 방법을 다룹니다. mutable의 쓰임, 이동 생성자에 noexcept가 없을 때 vector가 복사를 고르는 이유도 설명합니다.
-
C++ 현대적 다형성 설계: 상속 대신 합성·variant
dynamic_cast가 늘어나는 이벤트 시스템이나 여러 결제 수단처럼 상속이 부담스러워지는 경우를 합성과 std::variant로 다시 설계하는 방법을 보여줍니다. overloaded 헬퍼와 std::visit, 설계 선택 흐름, bad_variant_access 같은 에러도 다룹니다.