블로그
-
C++ 버퍼 오버플로우: strcpy·오프바이원 실수가 생기는 원리와 방지·탐지 방법
strcpy·gets·sprintf처럼 경계를 검사하지 않는 함수와 오프바이원 실수가 어떻게 버퍼 오버플로를 일으키는지 예제로 보여 주고, snprintf·std::string 같은 대안, AddressSanitizer 탐지, 스택 보호 컴파일러 옵션으로 막는 방법을 설명합니다.
-
C++ 캐시 교체 알고리즘: FIFO·LRU·LFU·Clock·MRU·OPT 구현과 비교
FIFO·LRU·LFU·MRU·Random·Clock·OPT 캐시 교체 정책의 동작 원리와 시간 복잡도를 비교하고, FIFO·LRU·Clock 캐시를 C++로 구현한 뒤 Redis 정책, OS 페이지 교체, CDN의 LFU 변형과 연결해 설명합니다.
-
C++20 달력과 시간대: year_month_day와 zoned_time 사용법
C++20 chrono의 year_month_day로 날짜를 표현하고 weekday로 요일을 계산하며, zoned_time으로 시간대를 변환하는 방법을 다음 영업일 계산, 회의 시간 변환, 반복 일정 예제로 설명합니다.
-
C++ 콜백 구현 4가지 비교: 함수 포인터, 펑터, std::function, 람다와 멤버 함수 콜백
C++ 콜백 패턴 정리. 함수 포인터, 펑터, std::function, 람다 네 가지 구현 방법을 비교하고, 비동기 콜백·이벤트 핸들러·Observer 패턴 활용, 콜백 지옥 회피와 성능 고려사항을 다룹니다.
-
C++ 서버 메모리 누수 디버깅 사례: Valgrind·ASan·Heaptrack으로 리스너 누적 찾기
계속 늘어나는 C++ 채팅 서버 메모리를 예로, RSS 지표로 누수 여부를 판단하고 Valgrind, ASan, Heaptrack을 각각 어디에 쓰는지, 해제되지 않는 이벤트 리스너를 어떻게 찾아 RAII로 고치는지 설명합니다. CI에 ASan을 넣을 때 잡히지 않는 누수의 종류도 다룹니다.
-
C++ REST API 성능 최적화 예제: perf로 병목 찾고 해시맵 인덱스·참조 반환으로 응답 시간 줄이기
사용자 목록을 반환하는 C++ REST API를 예로 들어, 벤치마크 기준선을 잡고 perf로 핫스팟을 찾은 뒤 요청마다 전체를 훑던 탐색을 해시맵 인덱스로 바꾸고, User 복사를 참조 반환으로 없애고, JSON 직렬화를 정리하는 과정을 연산 횟수 기준으로 설명합니다. 요청 안에서의 병렬화가 왜 위험한지도 다룹니다.
-
C++ 크래시 디버깅 실전 사례 | 간헐적 Segmentation Fault 해결기
가끔만 터지는 C++ 채팅 서버 세그폴트를 예제로 꾸며, 코어 덤프와 gdb로 크래시 지점부터 잡고 로컬 재현이 안 되면 rr 역방향 디버깅으로 데이터 경쟁을 찾는 과정을 따라갑니다. 뮤텍스, shared_ptr·weak_ptr, Asio strand 세 가지 수정안과 TSan 검증을 다룹니다.
-
C++ 캐스팅 4가지: static_cast·dynamic_cast·const_cast·reinterpret_cast 언제 쓰나
C++의 4가지 캐스트(static_cast, dynamic_cast, const_cast, reinterpret_cast)가 각각 언제 안전하고 언제 위험한지, C 스타일 캐스트(T)x가 왜 지양되는지, dynamic_cast 실패를 무시했을 때의 크래시까지 실전 예제로 정리합니다.
-
모던 C++ (C++11~C++20) 핵심 문법 치트시트 | auto·람다
C++11부터 C++20까지 버전별로 자주 쓰는 문법을 모았습니다. auto와 람다, 스마트 포인터, 구조화된 바인딩과 optional·variant, if constexpr, Concepts·Ranges·코루틴·삼원 비교 연산자를 짧은 예제로 바로 찾아볼 수 있습니다.
-
C++ 클래스·링크·메모리 문제를 증상으로 찾는 표: Rule of Five, EBCO, 다이아몬드, 이름 맹글링, use-after-free
복사 때 이중 해제, 객체 크기가 예상보다 큼, 기본 클래스가 두 번 생성됨, 링크 에러의 _Z 심볼, 해제 후 사용 같은 증상을 실행 결과로 보여 주고 원인과 자세한 글을 연결합니다.