반응형

Lifetime 2

C++ Callback 코드에서 Lambda Capture를 안전하게 쓰는 법

C++ lambda는 문법만 보면 짧고 편합니다.하지만 lambda가 std::function에 저장되거나 callback queue, event handler, async task로 넘어가면 capture한 값의 lifetime이 훨씬 중요해집니다.특히 reference capture는 코드가 짧아 보이지만, lambda가 local variable보다 오래 살아남는 순간 dangling reference를 만들 수 있습니다.이번 글에서는 C++17 기준으로 lambda capture의 lifetime을 예제 코드와 함께 정리해보겠습니다. lambda capture에서 중요한 질문은 “무엇을 capture했는가”보다 “lambda가 capture 대상보다 오래 살아남을 수 있는가”입니다. lambda가..

C++/Concepts 2026.07.16

C++ std::string_view 사용법과 lifetime 주의점

std::string_view는 C++17에서 자주 추천되는 타입입니다.문자열을 복사하지 않고 함수에 넘길 수 있고, std::string, string literal, char buffer를 하나의 인터페이스로 받을 수 있기 때문입니다.하지만 std::string_view는 편리한 만큼 위험한 타입이기도 합니다.이 타입은 문자열을 소유하지 않고, 단지 어떤 문자 배열을 바라보는 view일 뿐입니다. std::string_view의 핵심은 성능이 아니라 ownership을 갖지 않는다는 점입니다. lifetime을 보장하지 못하면 빠른 코드가 아니라 위험한 코드가 됩니다. 이번 글에서는 std::string_view가 무엇을 저장하는지, 어떤 상황에서 안전한지, dangling view가 왜 생기는지, ..

C++/Concepts 2026.07.06
반응형