static의 원초적인 목적은 함수내에서 선언되어 그 함수가 return되었다가
다시 그 함수가 불리워도 그 변수가 값을 유지하고 있도록 하기 위함입니다. C에서 그렇죠.
그런데 이런 static 변수는 기본적으로 해당 프로그램이 초기화될때
메모리에서 제일 먼저 만들어두는게 규칙이죠. 그래서 이 변수가 원래의 목적과 다르게
Global 변수를 선언할 때 static을 선언하는 것처럼 오용되어 변질되어 왔습니다.
사실 Global은 static선언과 관계없이 처음부터 끝까지 존재하니까요.
더 엄격히 말하면 static이 붙은 변수가 속한 범위(코딩 내부구조에 따른 유효범위)내에서만
계속 값이 유지된다는 의미입니다.
static이 함수에 붙었다고 해서 같은 파일이어도 컴파일되고 하는 것은 단순히 그 현상일 뿐입니다
static이 어떤 파일에 존재하는 함수에 붙은 경우,
특히 c경우에는 함수는 함수가 기록된 파일 자체가 범위가 되는 것입니다.
어떤 클래스이든, 변수이든, 그것이 static으로 선언되었을 때에는 그 선언된 클래스나 변수가
기본적으로 어떠한 상황이든 값이나 기능을 메모리에 계속해서 유지하고자 함이라는
기본적인 static의 목적을 명심하시고,
이 경우 해당 유효범위내에서 메모리에 제일 먼저 생성되고 초기화되어 존재하는 것이라는 것만
생각하시면 됩니다.
여기에서 파생된 여러가지 현상을 이해하면
좀더 static 선언의 의미를 확실히 알수 있을 것 같습니다.
또한 static 선언을 남발하지 않고 정확하게 사용할 수 있지 않을까요?
물론 현재 윈도우 프로그램이 메모리에 비교적 자유롭게 한다지만
아무래도 메모리를 간결하게 사용하는 것이 프로가 아닐까 생각합니다
출처 : http://blog.naver.com/focet55/130013495793
-------------------------------------------------------------------------------------------
위의 의미로만 본다면 함수가 선언된 파일 내에서만 함수를 사용할 수 있다는 의미가 되겠네요.
'Development' 카테고리의 다른 글
동기와 비동기 (0) | 2014.08.08 |
---|---|
스크랩 | 함수 프로그래밍이 주목받는 세 가지 이유 (0) | 2014.04.29 |
비트연산 (0) | 2014.02.25 |
프로그래밍 용어 모음/사전 (0) | 2013.12.20 |
HTML Web UI Link (0) | 2013.06.21 |
댓글