copy 에는 shallow copy(얕은복사)와 deep copy(깊은복사)가 있다.
1.shallow copy
얕은복사의 경우에는 스택의 같을 그대로 스택으로 복사하는 것이다.
2.deep copy
깊은 복사는 완벽하게 복사해내는 것이다.
포인터가 이 둘을 가르는데 아주 적절한 녀석이다.
포인터의 경우에 스택에는 힙영역의 주소가 들어있고 값은 힙에 들어 있다.
포인터를 copy할때 얕은복사로 스택의 값을 복사하게 된다면 하나의 힙 메모리 영역을 복사한것이다.
이러면 다른 두개의 포인터변수가 하나의 힙 영역을 가리키고 사용하는 것이다.
이런복사는 메모리 릭을 발생시킨다.
우리가 원한 포인터 copy는 새로운 힙영역에다가 같은 값을 주고 싶은 것이다.
(때로는 이 얕은 복사를 사용하기도 하지만 지금 우리가 바라는것은 이것인 것이다!)
이렇게 처리 해주는 것이 바로 deep copy이다.
shallow copy는 시스템이 자체적으로 만들어 주는것이 그러하다.
만약 deep copy를 원한다면 직접 코딩해야 것지?!^^
'Window Course > C++' 카테고리의 다른 글
Interface(인터페이스) (0) | 2010.11.02 |
---|---|
상속/포함/딜리게이션 (0) | 2010.11.02 |
reference(참조자) (0) | 2010.11.02 |
This 포인터 (0) | 2010.11.02 |
생성자/소멸자(파괴자) (0) | 2010.11.02 |