정적 변수 및 메서드(static)
정적이란 메모리 힙 영역에 데이터가 저장된다 라고 책에는 나와있다.
그렇다면 메모리 힙 영역은 무엇인가?
메모리 힙에 대해 알아보자.
프로그램을 사용할 수 있는 자유 메모리. 프로그램 실행 시에 함수로 보내는 데이터 등을 일시적으로 보관해 두는 소량의 메모리와 필요시 언제나 사용할 수 있는 대량의 메모리가 있다. 이때, 소량의 메모리를 ‘스택’이라 하고 대량의 메모리를 ‘힙’이라 한다. 이 ‘힙’이 없어지면 메모리 부족으로 ‘이상 종료’하게 된다. |
위의 정의를 살펴보자.
스택 - 소량의 메모리
힙 - 대량의 메모리
라고 간단하게 설명되어 있다.
딴 글들을 읽어보고 이해한 내용은 다음과 같다.
즉 자동으로 할당해주는 변수의 경우(즉 컴파일러가 할당해주는 영역)
스택 메모리에 생성되고
c에서의 malloc과 같이 강제로 세팅해주는 영역은 heap메모리에 저장되어 진다고 쓰여있다.
C#에는 malloc과 포인터가 없기 때문에 static만이 유일한 heap메모리 저장공간인 셈이다.
heap에 저장된 내용은 전역변수와 같이 사용되어 진다.(프로그램에서 유일한 값)
즉 사용시 클래스명.변수, 클래스명.함수로 사용되어진다.
static의 경우 인스턴스 생성 없이 어디서건 사용가능함으로 객체 생성이 필요없다.
ps. heap은 메모리 아래서부터 stack은 위에서부터 쌓인다.