내용 보기
작성자
아롱이 (IP : 172.17.0.1)
날짜
2020-07-28 08:50
제목
[C#] 깊은 복사(Deep Copy) VS 얕은 복사(Shallow Copy)
기초부분은 다시 한번 다듬기(?) 위해 모든 언어의 공통적인 부분인 데이터 복사에 대해 간단하게 정리 한다.
그림처럼 Shallow Copy로 데이터를 복사하면 복사된 객체는 서로 같은 참조된 필드를 공유하게 됩니다.대략적으로 위의 코드를 메모리 구조상으로 보면 다음과 같다. 이후 복사된 객체의 필드를 다음과 같이 변경해서 결과를 확인하면
값 형식의 데이터는 서로 각각 힙에 할당되어 있는 주소를 참조해서 각 데이터가 원본 데이터, 복사본 데이터가 서로 다르게 출력되는 것을 볼 수 있습니다. 그런데 참조형식의 필드는 서로 같은곳을 참조한다고 했는데 Name값을 보면 서로 다른 값이 출력되어 보여집니다. 이것은 원본의 origin.Name = "원본 값 변경"; 위 결과 처럼 Shallow Copy시 참조 객체는 Deep Copy되지 않고 서로 같은 객체를 바로 보게 됩니다.
깊은 복사는 참조 객체까지 모두 복사해서 서로 다른 주소를 참조하게 됩니다.
위 Deep Copy가 실행되고 난 후 메모리 구조를 보면 다음과 같습니다.
|
출처1
출처2
2020-07-28 09:02 |
자바스크립트의 깊은 복사와 얖은 복사 - https://medium.com/watcha/%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%99%80-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8B%AC%EB%8F%84%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%95%BC%EA%B8%B0-2f7d797e008a
|
아롱이 (172.17.0.1) |
2020-07-28 09:01 |
참고 - https://aspdotnet.tistory.com/2122
|
아롱이 (172.17.0.1) |
2020-07-28 09:01 |
참고 - https://m.blog.naver.com/adonise007/220578209008
|
아롱이 (172.17.0.1) |
2020-07-28 09:01 |
참고 - https://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&wid=11220#14310
|
아롱이 (172.17.0.1) |