[완료]기억부류의 뜻이 수명+연계에 대한 것 맞죠?

loopbit@naver.com의 이미지

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은 수명하고 관련된 개념이므로,

기억부류라는 말이 수명+연계의 개념이 맞는 거죠?

chadr의 이미지

항상 쓰는 것이지만 한글로 번역해놓으니 외계어같군요 ㅎㅎ

"기억부류"라는 한글의 원래 영어명이 어떻게 되어있었는지 궁금합니다.
위에서 예를 들어주신 상황이라면 수명+연계가 맞습니다.

하지만 static의 경우는 수명이 프로그램시작부터 프로그램종료까지이므로
개별 프로그램 입장에서는 수명은 무한대라고 볼수 있습니다.(물론 static의 내부 구현은 다를수 있지만 언어적인 측면에서는 그렇습니다.)
조금 더 첨언하자면 static으로 선언된 것을 사용할 때 이미 static이라고 정의된
부분이 메모리에 준비 되어있으므로(그 시점이 언제인지는 구현마다 다르지만) 생성 및 수명을 무한대로 봤습니다.

따라서 static의 경우에는 그냥 "연계" 개념만 포함할 수 있다고 볼수 있겠습니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

loopbit@naver.com의 이미지

용어는 책에 있는 거고요, 그래도 한글이 편해서 한글로 쓰겠습니다.

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은 명백하게 연계를 지정하는 예약어잖습니까? 따라서 기억부류는 수명 + 연계가 합쳐진 개념으로 받아들여야 한다는 것이 제가 고민했던 결론입니다. 책에 기억부류 지정자는 정확히 "어떤 어떤 역할을 하는 것이다"라고 나와있지 않아서 어렵게 생각해낸 것이고요, 이게 맞는지 궁금한 것입니다.

chadr의 이미지

결론 지으신 부분이 맞습니다. 전체적으로 기억부류(영어명이 더 익숙하지만 한글이 타자수가 적어서 쓰기 편하네요 ㅎㅎ)는
수명+연계를 관여하는게 맞습니다. 그중에서 각 키워드들이 수명과 연계를 어디까지 관여를 하는지는 각각 다르다고 보시면
될것 같습니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

loopbit@naver.com의 이미지

감사합니다.

ymir의 이미지

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 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.