본문 바로가기

C++6

🚀 move semantics와 std::move의 진짜 의미 - 복사하지 말고 "빼앗아라"✅ 서론: 왜 move가 중요한가요?C++는 성능이 생명입니다. 대용량 데이터를 다루는 객체를 복사할 때마다 깊은 복사가 일어나면?→ 느려지고, 메모리 낭비가 발생합니다.이를 해결하기 위한 핵심 개념이 Move Semantics입니다.📌 Move는 복사가 아닌 "소유권 이전"입니다. 말 그대로 자원을 "옮기는" 개념이죠. 📦 복사 vs 이동: 차이점🔁 복사(Copy)기존 객체의 내용을 그대로 복제해서 새 객체를 만듦느림 (특히 힙 메모리 할당이 많을수록)std::string a = "Hello";std::string b = a; // 복사, a는 그대로 존재🚚 이동(Move)기존 객체의 리소스를 그대로 "빼앗아" 옮김빠름 (복사 없이 포인터만 이동 가능)std::st.. 2025. 6. 12.
🔒 C++ 싱글톤(Singleton) 패턴 이해하기 **C++ 싱글톤(Singleton)**은 객체를 단 하나만 생성하고 그 인스턴스를 전역에서 공유하도록 하는 디자인 패턴입니다. 주로 설정 관리자, 로거, 데이터베이스 연결 객체 등과 같이 프로그램 전체에서 하나만 존재해야 하는 객체에 사용됩니다. 이 글에서는 C++에서 싱글톤을 구현하는 방법, 주의할 점, 그리고 장단점까지 자세히 설명합니다.🎯 싱글톤 패턴이란?싱글톤 패턴은 소프트웨어 디자인 패턴 중 하나로, 다음 세 가지 조건을 만족해야 합니다:클래스의 인스턴스가 오직 하나만 존재해야 한다.이 인스턴스에 접근할 수 있는 전역적인 방법이 제공되어야 한다.인스턴스는 필요할 때 생성되어야 한다 (lazy initialization).C++에서는 정적(static) 변수와 접근자를 통해 이를 구현할 수 있.. 2025. 6. 7.
C++ RAII 패턴 이해하기: 초보 개발자를 위한 가이드 C++로 프로그래밍을 시작하면서 가장 어려움을 겪는 부분 중 하나가 바로 메모리 관리입니다. "메모리를 할당했는데 어디서 해제해야 하지?", "이 포인터를 delete 해도 될까?", "메모리 누수가 발생했다는데 어디서 문제가 생긴 걸까?" 이런 고민들을 한번쯤은 해보셨을 것입니다.오늘은 이러한 메모리 관리의 고민을 해결해주는 강력한 도구, RAII 패턴에 대해 알아보려고 합니다. RAII는 언뜻 보면 어려워 보이는 약자이지만, 실제로는 매우 직관적이고 강력한 디자인 패턴입니다. 특히 현대 C++에서는 이 패턴을 잘 활용하면 메모리 관리에 대한 걱정을 크게 줄일 수 있습니다.RAII란 무엇인가?RAII는 "Resource Acquisition Is Initialization"의 약자로, 직역하면 "자원 .. 2024. 12. 8.
CMake 초보자 가이드: 처음부터 시작하는 CMakeLists.txt 작성법 안녕하세요. 오늘은 C/C++ 프로젝트에서 빌드 시스템으로 널리 사용되는 CMake의 기초부터 실용적인 사용법까지 자세히 알아보도록 하겠습니다.1. CMake란 무엇인가?CMake는 크로스 플랫폼 빌드 시스템 생성기입니다. C, C++ 프로젝트에서 소스 코드를 실행 파일이나 라이브러리로 빌드하는 과정을 자동화해주는 도구라고 생각하시면 됩니다. Make, Visual Studio, Ninja 등 다양한 빌드 시스템을 지원하기 때문에, CMake를 사용하면 플랫폼에 독립적인 빌드 환경을 구축할 수 있습니다.2. CMakeLists.txt 기본 구조CMake 프로젝트의 핵심은 CMakeLists.txt 파일입니다. 이 파일에는 프로젝트를 빌드하는데 필요한 모든 설정이 포함됩니다. 가장 기본적인 CMakeLis.. 2024. 11. 29.
초보자를 위한 Makefile 작성 방법 소프트웨어 개발에서 Makefile은 컴파일 과정을 자동화하고 프로젝트의 빌드 관리를 단순화하는 중요한 도구입니다. Makefile은 특히 C/C++와 같은 언어에서 유용하며, 프로젝트가 커질수록 그 중요성이 더 커집니다. 하지만 초보자에게는 처음 접할 때 약간 어려울 수 있습니다. 이 글에서는 Makefile의 기초부터 간단한 예제와 단계별 작성 방법까지 알아보겠습니다.1. Makefile이란?Makefile은 make라는 빌드 도구에 의해 읽히는 구성 파일입니다. 여러 소스 파일과 종속성을 가진 프로젝트에서, 컴파일 명령을 일일이 입력하는 대신 Makefile을 사용하여 빌드 과정을 자동화할 수 있습니다.Makefile의 주요 개념타겟(Target): 만들고자 하는 파일 또는 동작(예: 실행 파일)... 2024. 11. 28.
C++에서 정적 라이브러리와 동적 라이브러리의 차이 C++ 개발에서 코드의 재사용성과 모듈화를 위해 라이브러리를 사용하는 것은 필수적입니다. 라이브러리는 크게 **정적 라이브러리(Static Library)**와 **동적 라이브러리(Dynamic Library)**로 나뉘며, 각각의 사용 목적과 동작 방식에는 차이가 있습니다. 이 글에서는 두 라이브러리의 기본 개념, 장단점, 생성 및 사용 방법, 그리고 실전에서의 활용 방안을 살펴보겠습니다.1. 정적 라이브러리 (Static Library)정의정적 라이브러리는 컴파일 타임에 프로그램에 포함되어 실행 파일의 일부가 되는 라이브러리입니다. 보통 .lib(Windows) 또는 .a(Linux/Mac) 확장자로 생성됩니다. 동작 방식정적 라이브러리는 컴파일 및 링크 단계에서 프로그램에 통합됩니다. 즉, 라이브러.. 2024. 11. 28.