본문 바로가기
C#

C# 닷넷 기초 - 변수와 메모리의 이해1 : 변수 (스택stack, 힙heap 메모리) / 개발자 기술 면접에서 꼭 나오는 질문

by 따봉이 2022. 1. 5.
728x90
반응형

오늘은 변수와 함께 메모리에 대해서 정리를 해보려고 한다. 

 

먼저 프로그래밍에 없어서는 안 될 가장 많이 쓰고 가장 기본적인 것 

바로 변수! 다

변수는 말 그대로 변하는 값인 것이다. 

 

int age = 19;

Console.Writeline("age의 값은? " + age.ToString());

age = 20;

Console.Writeline("age의 값은? " + name.ToString());


///결과
age의 값은? 19
age의 값은? 20

 

위처럼 age이란 int 숫자형 변수를 선언하고 처음에 age 변수에 19란 숫자를 대입했다. 

그러고 나서 똑같은 age 변수에 20 이란 숫자를 대입했다. 숫자 변수인 age에는 

age란 변수명은 그대로지만 안에 들어있는 실제 값은 19에서 20으로 바뀐 것이다. 

 

위의 내용을 메모리가 어떻게 사용되는지 살펴보면 아래와 같다. 

코드가 실제 메모리에 반영되는 구조

int로 변수를 선언하고 숫자 값을 대입하면 위처럼 메모리 영역에 4byte의 공간을 할당하고 

거기에 19라는 숫자값이 들어가게 되는 것이다.

그리고 같은 변수에 값을 변경하게 되면 같은 메모리 공간에 값이 변하게 된다. 

 

기존 메모리 영역에 19가 없어지고 20 값이 들어옴

 

 

변수와 메모리 내용을 좀 더 쉽게 이해하기 위해 아파트로 비유해보자. 

실제 int는 값형식이고 string 참조형식이라 아래 string은 값형식으로 설명을 한 것이라고 보면 되고

자세한 참조형식, 값형식은 다음 글에서 설명하겠다. 

메모리를 아파트로 비유

자이 아파트가 메모리 영역에 해당되고 201호거주자 라는 변수에 홍길동을 대입했다. 이러면 실제 자이아파트201호(메모리 영역)에는 홍길동이가 들어가서 살게 된다. 아파트처럼 특정 공간이 있듯이 메모리에도 공간이라는 것이 있고 그것이 이 아파트의 구조와 개념적으로 비슷하다고 보면 된다. 

자 그럼 홍길동이가 이사를 가고 임꺽정이가 이사를 들어와 있는 상황이라면 코드는 어떻게 될까?

임꺽정이가 이사옴(기존 변수에 다른 값을 대입한 상황)

201호거주자라는 명칭은 동일하지만 실제 거주자(값)는 홍길동에서 임꺽정으로 바뀌었다. 변수를 사용하고 값이 변경되고 할 때 메모리에서는 위와 같은 상황들이 발생하게 된다. 

 

C# 닷넷 프로그래밍에서 변수 사용은 필수이며 아무 생각 없이 변수를 선언하고 값을 대입하여 사용하는 것은 좋지 않다. 위와 같은 원리를 이해하고 코딩을 해야 제대로 된 프로그래밍을 할 수가 있다. 그렇기 때문에 개발자 면접 시 면접관이 메모리에 관하여 질문을 꼭 하게 된다. 

 

이때 질문이

"힙(heap) 과 스택(Stack)의 차이를 설명해보세요."

일 것이다. 

 

그럼 힙메모리스택 메모리의 차이를 알아보도록 하자. 

 

https://ttleader.tistory.com/126

 

C# 닷넷 기초 - 변수와 메모리의 이해2 : 값형식과 참조 형식(스택stack, 힙heap 메모리) / 개발자 기

오늘은 스택과 힙에 대해서 정리를 해보도록 하겠습니다. 스택과 힙 메모리 전에 변수와 메모리 구조에 대한 간단한 정리는 이전글 참고해주세요. https://ttleader.tistory.com/125 C# 닷넷 기초 - 변수와

ttleader.tistory.com

 

728x90
반응형

댓글