"얕은 복사, 깊은 복사"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{다른뜻|복제}}
;shallow copy
;shallow copy
;얕은 복사
;얕은 복사


;deep copy, clone
;deep copy, clone
;깊은 복사, 딥 카피, 클론
;깊은 복사, 딥 카피, 딮 카피, 클론


==얕은 복사==
==얕은 복사==
* 주소만 복사
* 주소만 복사
* 원본과 사본이 같은 주소를 참조함
* 사본을 수정하면 원본의 내용도 바뀌게 됨
* 원본을 수정하면 사본의 내용도 바뀌게 됨
* 특히 C, C++ 등에서 포인터 사용시 흔히 나타나는 실수
:문자열을 복사할 때 포인터만 복사한 경우


==깊은 복사==
==깊은 복사==
* 새로운 자료공간을 구성한 후 내용 복사
* 새로운 자료공간을 구성한 후 내용 복사
* strcpy()와 같이, 별도의 메모리 영역을 확보(malloc)하고 내용을 복사한 경우


http://www.bogotobogo.com/cplusplus/images/pointers1/deep_vs_shallow_copy.png
http://www.bogotobogo.com/cplusplus/images/pointers1/deep_vs_shallow_copy.png
16번째 줄: 23번째 줄:
* [[Array clone]]
* [[Array clone]]
* [[포인터]]
* [[포인터]]
* [[복제]]
* [[복사]]
* [[언어별 객체복사 테스트]]


[[분류: 자료구조]]
[[분류: 자료구조]]

2018년 9월 9일 (일) 00:17 기준 최신판

  다른 뜻에 대해서는 복제 문서를 참조하십시오.
shallow copy
얕은 복사
deep copy, clone
깊은 복사, 딥 카피, 딮 카피, 클론

1 얕은 복사[ | ]

  • 주소만 복사
  • 원본과 사본이 같은 주소를 참조함
  • 사본을 수정하면 원본의 내용도 바뀌게 됨
  • 원본을 수정하면 사본의 내용도 바뀌게 됨
  • 특히 C, C++ 등에서 포인터 사용시 흔히 나타나는 실수
문자열을 복사할 때 포인터만 복사한 경우

2 깊은 복사[ | ]

  • 새로운 자료공간을 구성한 후 내용 복사
  • strcpy()와 같이, 별도의 메모리 영역을 확보(malloc)하고 내용을 복사한 경우

 

3 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}