C++ 메모리 관리: 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)의 차이점

1. 개요 및 핵심 개념 C++에서 객체를 복사할 때 메모리를 어떻게 다루느냐에 따라 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)로 구분됩니다. 이는 특히 클래스 내부에서 동적 메모리 할당을 사용할 때 프로그램의 안정성을 결정짓는 매우 중요한 요소입니다. 얕은 복사 (Shallow Copy): 객체의 멤버 변수 값을 그대로 복사합니다. 만약 멤버가 포인터라면, 포 ...

6월 27일 20:25에 게시됨

C++ 메모리 관리의 진화: calloc에서 스마트 포인터까지

1장: C 스타일 메모리 관리에서 현대 C++로의 전환 C++은 시스템 프로그래밍의 안정성과 효율성, 추상화 능력을 지속적으로 개선하는 과정에서 발전해 왔습니다. 초기 C++은 C 언어의 malloc/free를 기반으로 동적 메모리 할당을 수행했으나, 이는 메모리 누수, 중복 해제, 떠 있는 포인터 등 다양한 문제를 유발했습니다. 전통적인 C 스타일 메모리 관리의 문제점 - 개 ...

6월 24일 01:24에 게시됨

weak_ptr와 lock으로 순환 참조 해결하기

순환 참조의 본질shared_ptr는 C++에서 메모리 관리를 자동화하는 강력한 도구이지만, 서로를 가리키는 구조에서는 치명적인 약점을 드러낸다. 두 객체가 서로를 shared_ptr로 참조하면 참조 카운트가 영원히 0에 도달하지 못해 메모리 누수가 발생한다. 이를 해결하려면 weak_ptr을 활용해 소유권과 참조를 분리해야 한다.weak_ptr의 설계 의도weak_ptr은 객체의 생 여부 ...

6월 11일 22:00에 게시됨

C++ 스마트 포인터의 원리와 활용

스마트 포인터가 필요한 이유 C++에서 동적 메모리를 직접 관리하다 보면 예외 발생 시 delete를 놓쳐 메모리 누수가 생길 수 있습니다. 특히 복잡한 제어 흐름이나 예외 처리 과정에서는 자원 해제를 보장하기 어렵습니다. 이를 해결하기 위해 '자원 획득은 초기화다(Resource Acquisition Is Initialization, RAII)'라는 개념을 기반으로 한 스마트 포인터가 등장했습니 ...

5월 23일 08:32에 게시됨