본문 바로가기

c++3

C/C++ 얕은 복사 및 깊은 복사 내용 정리 얕은 복사와 깊은 복사: C/C++ 메모리 복사의 진짜 의미C/C++에서 변수 복사는 단순히 '=' 기호 하나로 끝나지 않습니다. 복사의 방식에 따라 프로그램의 동작, 성능, 심지어 심각한 오류까지 좌우될 수 있습니다. 이 글에서는 얕은 복사(shallow copy)와 깊은 복사(deep copy)의 차이를 근본부터 파헤쳐 보겠습니다.복사란 무엇인가?복사란 한 객체의 내용을 다른 객체로 복제하는 것입니다. 하지만 '내용'이라는 말이 문제가 됩니다. 객체가 단순한 값(int, double 등)일 때는 문제가 없지만, 객체가 포인터나 동적 메모리를 포함할 때 복사의 정의는 복잡해집니다.int a = 10;int b = a; // 단순 복사 (값 복사) 이 경우 a와 b는 완전히 독립된 두 개의 변수입니다... 2025. 6. 21.
C/C++ 참조자(reference) 내용 정리 참조자: 메모리 주소를 숨기고 안정성을 얻다C++의 참조자(reference)는 단순히 "포인터보다 쉬운 문법" 그 이상입니다. 실제로 참조자는 C++의 타입 시스템과 메모리 모델에 깊숙이 통합되어 있고, 복사 비용을 줄이고, 인터페이스의 안전성을 높이며, 원본 수정 제어까지 담당하는 중요한 개념입니다. 이번 글에서는 참조자의 기본 개념부터 심화 활용, 내부 작동 방식까지 심층적으로 다뤄봅니다.참조자의 정의: 또 하나의 이름참조자란 이미 존재하는 객체의 또 다른 이름(alias)입니다. 일단 어떤 변수와 결합되면, 그 변수의 메모리 공간을 함께 공유합니다.int x = 42;int& r = x; // r은 x의 또 다른 이름 이후 r을 통해 값을 읽거나 수정하면 실제로는 x의 메모리에 직접 접근하는 것.. 2025. 6. 19.
C/C++ 포인터(pointer) 내용 정리 C++ 포인터: 단순한 주소가 아닌 메모리 제어의 핵심포인터는 단순히 "주소를 저장하는 변수"로 시작하지만, C++에서는 이보다 훨씬 깊은 의미를 가집니다. 이번 글에서는 포인터의 기본을 넘어, 메모리 모델, 포인터 산술, const 포인터, 함수 포인터, 동적 할당 관리까지 보다 심도 있게 다룹니다.포인터는 메모리 모델 그 자체C++은 하드웨어와 밀접하게 맞닿아 있는 언어입니다. 포인터를 이해한다는 것은 결국 메모리의 구조 자체를 이해한다는 것과 같습니다. 모든 변수는 물리적 메모리 어딘가에 주소를 가지고 있고, 포인터는 그 주소를 직접 다룰 수 있게 합니다.int x = 42;int* p = &x; 위에서 p는 스택 메모리 상의 변수 x의 주소를 저장합니다. 이 주소를 역참조(*p)하면 x의 값을 읽.. 2025. 6. 19.