• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Primitive Type 메모리 관련 질문입니다!

21.01.02 15:02 작성 조회수 180

0

안녕하세요! 강의를 보던 중에 헷갈리는 부분이 있어서 질문드립니다.

기본형은 만들어진 데이터를 계속 재사용한다고 설명해주셨는데
그럼 5003번 주소를 참조하고 있을 경우에 증감연산자(++, --)를 수행하면
5003번 주소에 있는 값 자체를 바꾸는 것인가요, 새로운 값을 저장해서 그 메모리 주소를 참조해주는 것인가요?
전자라면 그렇게 되면 같은 값을 바라보고 있는 변수들은 다 값이 변경되는건지도 궁금합니다..!

좋은 강의 제공해주셔서 감사합니다!

답변 4

·

답변을 작성해보세요.

2

우선 값을 증가시킨 다음 해당 값이 저장된 메모리가 있는지를 먼저 찾습니다.

있다면 해당 메모리 주소를 참조하게 되고,

없다면 새로운 값을 저장해서 그 메모리 주소를 참조하게 됩니다.

즉 한 번 메모리에 저장된 기본형 데이터는 사라지지 않는 한은 영원히 변하지 않습니다.

0

완전히 잘못 이해하셨습니다.

var a = 10;
var b = 10;
var c = a;

에서 변수를 위한 공간은 3개이고, 값을 위한 공간은 10 하나뿐입니다.

a = 20;
c = 30;

이제 값을 위한 공간은 10, 20, 30 총 세개가 되었습니다.

10, 20, 30은 "기본형 데이터"입니다. 기본형 데이터는 덮어씌울 수 없습니다.

강의를 다시 한 번 찬찬히 들어보시길 바래요.

0

뿌엥님의 프로필

뿌엥

2021.01.25

안녕하세요! 답변을 읽다가 궁금한 게 생겨서 글을 적습니다.

우선 값을 증가시킨 다음 해당 값이 저장된 메모리가 있는지를 먼저 찾습니다.

즉 한 번 메모리에 저장된 기본형 데이터는 사라지지 않는 한은 영원히 변하지 않습니다.

라고 답변해주셨는데요.

아래와 같은 코드를 작성하면 메모리 상에는 어떻게 저장되는지 궁금해요!

var a = 10;

var b = 10;

var c = a;

제가 강의를 듣고 이해한 바로는,

변수를 위한 공간은  a, b, c 총 세개 확보되고

값을 위한 공간은 10, 10 두개일 거 같은데 맞나요?

여기서 다시

a = 20;

c = 30;

이라 할당하면

a가 가리킬 값 20이 추가로 저장되고,  

c변수가 바라보던 10은 30으로 덮어씌워지는 것이 맞나요?

강의를 통해 많이 배우고 있어요! 항상 감사합니다!ㅎㅎ

0

찡솔님의 프로필

찡솔

질문자

2021.01.02

아 이제 확실히 이해가 됐네요 ㅎㅎ 답변 감사합니다!