ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C Language] 31. 기억부류(Storage Class) 개요 - C 언어
    CSE/C Language 2015. 7. 18. 16:12

    1. 기억부류란?


     기억부류(Storage)란 변수를 지정할 때 그 변수가 메모리에 저장되는 위치나 변수가 프로그램에 미치는 범위를 말한다. 


     처음 프로그램을 작성할 때는 기억부류에 대한 개념 없이 프로그램을 작성해도 되지만 나중에는 반드시 기억부류를 염두에 두면서 프로그램을 작성해야 한다. 


     그렇지 않으면 프로그램이 커질수록 수정, 보완에 큰 문제가 발생한다. 예를 들어보자.


     프로젝트를 진행할 때 하나의 파일, 하나의 함수로 진행하는 경우는 없다. 프로젝트는 보통 수십 개, 수백 개의 파일과 함수로 구성되며, 프로그래머가 각각의 함수나 파일을 담당한다. 어떤 프로그래머는 화면에 관련된 파일과 함수만을 담당하고, 출력에 관한 사항은 또다른 프로그래머가 담당하는 식이다. 프로젝트가 한창 진행 중일 때 알 수 없는 문제가 발생했고 이를 해결하는 과정에서 변수 'subject'에 문제가 있음을 발견했다. subject라는 변수를 건드릴 수 있는 권한을 가진 사람이 만약 한 사람이라면 그 한 사람만 추궁하여 subject 변수에 대한 처리를 어떻게 했는지 알아보면 문제점은 바로 찾아낼 수 있다. 


     하지만 subject 변수를 10 사람이 변경할 수 있는 권한을 가지고 있다면 이야기는 완전히 달라진다. 서로 자신의 프로그램은 문제가 없으며 subject 변수를 문제 없이 사용했다고 주장할 것이 뻔하기 때문이다. 누가 subject 변수를 어디서 어떻게 변경했는지 10 사람의 행적을 모두 추적해야 하기 때문에 플젝트는 난관에 봉착한다. 하나의 프로그램을 작성할 때 여러 개의 함수로 분할하는 경우에도 같은 문제가 발생한다. 이것은 비단 여러 사람이 하나의 프로젝트를 진행할 때 발생하는 문제가 아니다. 모든 모듈을 한 사람이 작성할 때도 같은 일이 벌어진다. subject라는 변수를 변경할 수 있는 곳이 10 개의 파일이라면 10개의 파일을 모두 검토해야 하는 것이다.


     만약 기억부류라는 것이 없다면 프로그래머는 프로그램을 수정하거나 문제점이 발견했을 때 상당한 시간과 노력이 필요하며 그 시간은 프로그램이 커질수록 기하급수적으로 늘어날 것이다. 그러므로 초기에는 기억부류를 신경 쓰지 않아도 큰 문제가 없지만 나중에는 반드시 신경써서 처리해야 하는 것이다. 기억부류라는 것이 왜 있어 골치 아프게 만드냐고 생각하지 말고 오히려 기억부류가 있기에 편히 프로그램을 작성할 수 있는 것이다.





    2. 기억부류의 종류

     기억부류는 변수와 함수 모두에 적용할 수 있는데, 변수는 네 가지, 함수에는 두가지가 적용받는다.




      1.auto

      지역변수 

       

      2. extern 

      전역변수 

      외부함수 

      3. static 

      정적변수 

      정적함수 

      4. register 

      레지스터 변수 

     



     지역변수는 사용빈도가 아주 높으며 전역변수와 정적변수의 사용빈도는 낮다. 


     외부함수와 정적함수 역시 사용빈도는 그리 높지 않다.




    댓글

Designed by Tistory.