원시값, 참조값에 대해 메모리 관점에서 설명해주세요.

최관수·2023년 9월 13일
0

기술면접

목록 보기
25/58

내용 정리

  • 원시 값은 단순한 데이터이며, 모든 원시 값은 변경이 불가능합니다. 이 불가능하다는 의미를 메모리의 관점에서 예시를 들어 보겠습니다. 변수 number에 1을 할당하고 다음 라인에서 100을 재할당한다면, 기존의 1이라는 원시 값을 수정하는 것이 아니라 새로운 메모리 공간에 100을 저장하고 해당 변수는 100이 담긴 주소를 바라보게 됩니다. 즉, 원시 값은 실제 값이 복사되어서 전달되게 되는데 이걸 Pass by Value, 값에 의한 전달이라고 말합니다.
  • 반대로 참조 값을 변수에 할당하면 변수에 참조 값이 저장되는 개념입니다. 원시 값을 제외한 object, array, function 등이 해당되는데 이 또한 메모리 관점에서 설명하자면, 참조 값은 변경이 가능하기에 재할당을 하면 새로운 공간이 할당되는 것이 아니라 기존의 참조 값 자체를 변경합니다. 참조 값은 값 자체가 아니라 참조 값을 들고 있는 메모리 주소를 비교하기 때문에 다른 변수에 동일한 값을 저장하더라도 두 참조 값은 비교연산자를 통해 false가 나오게 됩니다. 원시 값과는 다르게 Pass by Reference, 참조 값이 저장된 메모리 주소 자체가 전달되는 개념입니다. 예컨대 해당 객체를 복사하고 값을 재할당하면 동일한 메모리 주소를 바라보고 있기 때문에 두 객체의 값 모두 변경이 됩니다. 참조값 재할당의 대표적인 사례라고 볼 수 있습니다.

꼬리 질문

  • 스택과 힙 메모리의 차이가 무엇인가요?

참고자료

스터디 메모

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글