얕은복사 & 깊은복사

한재민·2025년 2월 6일

용어정리

목록 보기
5/33
post-thumbnail

얕복 깊복

얕은복사

멤버 데이터를 비트열 단위로 똑같이 복사한다.
주소값을 그대로 복사하여 같은 주소값을 가리키게된다고 보면된다!

변수2 = 변수1; 얕은복사를 하면
변수2는 변수1이 가리키고있던 주소값을
그대로 복사하여 같은곳을 참조하게된다.


깊은복사

값을 복사할때 힙 메모리에 새로운 메모리공간을 할당해주고 값을 복사한다.

간단한 C++ 예시코드

class Student
{
public:
	Student(const char* name, int age) // 인자가 2개인 생성자
	{
		_name = new char[strlen(name)] + 1]; // 힙메모리에 할당해준다
		strcpy(_name,name); 
		// name의 값 을 복사하여 _name이 가리키고있는 힙메모리에 값을 넣어줌
		_age = age; 
	}

	Student(const Student* s) // 얕은 복사 ( 복사생성자 )
	{
		_name = s->_name;
		_age = s->_age;
		// 주소값을 복사한다. ( 얕은복사 )
	}

	Student(const Student& s) // 깊은 복사 ( 복사 생성자 )
	{
		_name = new char[strlen(s._name) + 1] // 힙메모리에 메모리공간을 할당해준다.
		//새로운 메모리공간에 값을 넣는다 ( 깊은 복사 )
		strcpy(_name,s._name);
		_age = s._age; 
	}

public:
	char*	_name;
	int _age;
}
profile
유니티 클라이언트 취업준비중입니다..

0개의 댓글