static함수

static의 원초적인 목적은 함수내에서 선언되어 그 함수가 return되었다가
다시 그 함수가 불리워도 그 변수가 값을 유지하고 있도록 하기 위함입니다. C에서 그렇죠.
그런데 이런 static 변수는 기본적으로 해당 프로그램이 초기화될때
메모리에서 제일 먼저 만들어두는게 규칙이죠. 그래서 이 변수가 원래의 목적과 다르게
Global 변수를 선언할 때 static을 선언하는 것처럼 오용되어 변질되어 왔습니다.

사실 Global은 static선언과 관계없이 처음부터 끝까지 존재하니까요.  
더 엄격히 말하면 static이 붙은 변수가 속한 범위(코딩 내부구조에 따른 유효범위)내에서만
계속 값이 유지된다는 의미입니다.

static이 함수에 붙었다고 해서 같은 파일이어도 컴파일되고 하는 것은 단순히 그 현상일 뿐입니다
static이 어떤 파일에 존재하는 함수에 붙은 경우,
특히 c경우에는 함수는 함수가 기록된 파일 자체가 범위가 되는 것입니다.

어떤 클래스이든, 변수이든, 그것이 static으로 선언되었을 때에는 그 선언된 클래스나 변수가
기본적으로 어떠한 상황이든 값이나 기능을 메모리에 계속해서 유지하고자 함이라는
기본적인 static의 목적을 명심하시고,
이 경우 해당 유효범위내에서 메모리에 제일 먼저 생성되고 초기화되어 존재하는 것이라는 것만
생각하시면 됩니다.

여기에서 파생된 여러가지 현상을 이해하면
좀더 static 선언의 의미를 확실히 알수 있을 것 같습니다.
또한 static 선언을 남발하지 않고 정확하게 사용할 수 있지 않을까요?
물론 현재 윈도우 프로그램이 메모리에 비교적 자유롭게 한다지만
아무래도 메모리를 간결하게 사용하는 것이 프로가 아닐까 생각합니다

출처 : http://blog.naver.com/focet55/130013495793

-------------------------------------------------------------------------------------------

위의 의미로만 본다면 함수가 선언된 파일 내에서만 함수를 사용할 수 있다는 의미가 되겠네요.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 고포리 | 2007/02/09 13:20 | 프로그래밍 | 트랙백 | 덧글(0)

트랙백 주소 : http://sungod0.egloos.com/tb/3086178
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶