[완료]기억부류의 뜻이 수명+연계에 대한 것 맞죠?
글쓴이: loopbit@naver.com / 작성시간: 수, 2011/03/16 - 10:56오후
static int obj1;
int main( void )
{
static int obj2;
}
obj1: 화일통용범위(file scope), 내부연계(inner linkage), 정적기억수명(static storage duration)
obj2: 블록통용범위(block scope), 무연계(no linkage), 정적기억수명(static storage duration)
기억부류 지정자가 똑같이 static입니다.
obj1에서 static은 연계에 관련된 개념이고,
obj2에서 static은 수명하고 관련된 개념이므로,
기억부류라는 말이 수명+연계의 개념이 맞는 거죠?
Forums:
항상 쓰는 것이지만 한글로 번역해놓으니 외계어같군요
항상 쓰는 것이지만 한글로 번역해놓으니 외계어같군요 ㅎㅎ
"기억부류"라는 한글의 원래 영어명이 어떻게 되어있었는지 궁금합니다.
위에서 예를 들어주신 상황이라면 수명+연계가 맞습니다.
하지만 static의 경우는 수명이 프로그램시작부터 프로그램종료까지이므로
개별 프로그램 입장에서는 수명은 무한대라고 볼수 있습니다.(물론 static의 내부 구현은 다를수 있지만 언어적인 측면에서는 그렇습니다.)
조금 더 첨언하자면 static으로 선언된 것을 사용할 때 이미 static이라고 정의된
부분이 메모리에 준비 되어있으므로(그 시점이 언제인지는 구현마다 다르지만) 생성 및 수명을 무한대로 봤습니다.
따라서 static의 경우에는 그냥 "연계" 개념만 포함할 수 있다고 볼수 있겠습니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
C언어이고요, 기억부류는 storage
용어는 책에 있는 거고요, 그래도 한글이 편해서 한글로 쓰겠습니다.
C언어이고요, 기억부류는 storage class입니다. 책에 나와 있는 거고요.
그런데 obj2는 블록에 있으니까 자동수명이잖아요? 만일 static이라는 예약어가 없으면 auto int obj2와 같은 선언이 되는 걸로 알고 있습니다. 여기에서 auto를 static으로 바꾸어주면 수명만 정적으로 바뀌고, scope와 linkage는 변하지 않겠고요, 이런 의미에서 static의 역할은 자동기억수명(automatic storage duration)을 정적기억수명(static storage duration)으로 바꾸어주는 것이지, 연계(linkage)와는 상관없는 예약어 아닌가요?
그리고 기억부류 지정자(storage class specifier) 중에 extern이라는 예약어가 있잖습니까?
이 extern은 명백하게 연계를 지정하는 예약어잖습니까? 따라서 기억부류는 수명 + 연계가 합쳐진 개념으로 받아들여야 한다는 것이 제가 고민했던 결론입니다. 책에 기억부류 지정자는 정확히 "어떤 어떤 역할을 하는 것이다"라고 나와있지 않아서 어렵게 생각해낸 것이고요, 이게 맞는지 궁금한 것입니다.
결론 지으신 부분이 맞습니다. 전체적으로
결론 지으신 부분이 맞습니다. 전체적으로 기억부류(영어명이 더 익숙하지만 한글이 타자수가 적어서 쓰기 편하네요 ㅎㅎ)는
수명+연계를 관여하는게 맞습니다. 그중에서 각 키워드들이 수명과 연계를 어디까지 관여를 하는지는 각각 다르다고 보시면
될것 같습니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
감사합니다.
감사합니다.
음 ..
storage-class specifier 로 linkage 와 storage duration 을 지정할 수 있으니..
둘 다 관여한다고 보는게 맞을 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기