태그: RAII
12편
-
C++ 소멸자와 RAII: 가상 소멸자, 규칙 0, 소멸자에서의 예외
소멸자 호출 순서, 가상 소멸자가 필요한 정확한 조건과 대안(protected 비가상), Rule of 0/3/5, 소멸자에서의 예외·this 사용 함정, 스마트 포인터와의 조합까지 실무 기준으로 정리합니다.
-
C++ 메모리 누수 찾기: Valgrind·ASan·CRT 디버그 힙 사용법과 누수 패턴
Valgrind memcheck와 AddressSanitizer, Visual Studio CRT 디버그 힙으로 C++ 메모리 누수를 찾는 방법을 설명하고, new/delete 불일치, 예외 경로, shared_ptr 순환 참조, 컨테이너에 저장한 포인터 같은 누수 원인과 RAII 해결법을 다룹니다.
-
C++ 개발자 기술 면접 | 자주 나오는 질문과 답변 스크립트(30초·90초)·꼬리 질문 대비
C++ 면접에서 RAII, 이동 의미론, vtable, data race, 반복자 무효화, ODR 같은 단골 주제를 30초 요약과 90초 확장 답변으로 나눠 말하는 법, 그리고 이어지는 꼬리 질문에 한 줄로 대응하는 요령을 다룹니다.
-
C++ malloc vs new vs make_unique: 메모리 할당 방식별 안전성 비교
C++ malloc, new, make_unique를 생성자 호출·타입 안전성·실패 처리(nullptr, bad_alloc, nothrow)·예외 안전성으로 비교하고, 속도 차이가 거의 없는 이유와 벤치마크가 0ms로 나오는 이유까지 정리합니다.
-
C++ 스택 되감기: 예외 발생 시 소멸자 호출 순서와 소멸자 예외가 terminate되는 이유
C++에서 예외가 던져지면 catch를 찾을 때까지 스택 프레임을 거슬러 올라가며 지역 객체 소멸자를 역순으로 호출합니다. 이 순서와 RAII가 자원 누수를 막는 원리, 소멸자에서 예외를 던지면 terminate되는 이유, 부분 생성된 객체 처리를 예제로 봅니다.
-
C++ RAII와 스마트 포인터: unique_ptr·shared_ptr·weak_ptr 소유권 차이와 순환 참조
자원 해제를 소멸자에 맡기는 RAII 원칙에서 출발해 unique_ptr, shared_ptr, weak_ptr의 소유권 차이를 팩토리와 캐시 예제로 비교하고, 순환 참조, this로 shared_ptr을 만드는 실수, 배열과 커스텀 삭제자 사용법을 설명합니다.
-
C++20 std::jthread: 자동 join과 stop_token으로 스레드 협조적 중단하기
C++20 std::jthread가 소멸 시 자동으로 join하는 방식과 stop_token·stop_source·stop_callback으로 스레드를 협조적으로 중단하는 방법을 std::thread와 비교하고, 중단 체크 누락이나 detach 같은 실수를 예제로 짚습니다.
-
C++ 커스텀 삭제자: unique_ptr·shared_ptr로 FILE*·소켓·C 자원 관리하기
unique_ptr과 shared_ptr에 커스텀 삭제자를 붙여 FILE*, 소켓, C 라이브러리 자원을 RAII로 관리하는 방법을 설명하고, 함수 포인터·람다·함수 객체 삭제자의 차이와 배열 삭제자, nullptr 처리 문제를 다룹니다.
-
C++ 복사 생성자와 이동 생성자: 호출 시점, Rule of Five와 Rule of Zero
C++ 복사 생성자와 이동 생성자가 호출되는 시점을 동적 배열, 파일 핸들러, 간단한 스마트 포인터 예제로 보여 주고, Rule of Five와 Rule of Zero, 얕은 복사·자기 대입·noexcept 누락 문제를 설명합니다.
-
[[nodiscard]]로 반환값 무시 막기: 에러 코드, RAII 타입, 사유 메시지, Clang-Tidy 검증
C++ [[nodiscard]] 정리. 반환값을 무시해서 생기는 버그, 에러 코드와 RAII 타입에 붙이는 법, C++20 사유 메시지와 생성자 적용, Clang-Tidy 검증, C++26 std::ignore 논의를 다룹니다.
-
C++ 개발자의 뇌 구조로 이해하는 Go 언어
C++ 습관대로 Go를 쓰다 막히는 지점을 파일은 어디서 닫는지, 에러를 매번 if로 확인해야 하는지 같은 질문으로 풀어 봅니다. RAII와 defer·GC, 템플릿과 인터페이스, 예외와 error 반환, 스레드와 고루틴·채널의 대응 관계를 표로 정리했습니다.
-
C++ RAII: 생성자에서 획득하고 소멸자에서 해제하는 자원 관리 클래스 만들기
파일 핸들을 닫지 않아 '파일을 열 수 없습니다' 장애가 난 사례에서 시작해, 생성자에서 획득하고 소멸자에서 해제하는 RAII로 파일, 뮤텍스, 소켓, DB 트랜잭션을 관리하는 클래스를 직접 만들고 복사와 이동 규칙을 정하는 방법을 보여줍니다.