2024년 1학기/C 프로그래밍

13주차 예습과제

윤지선 2024. 5. 28. 02:52

코드 영역과 데이터 영역

- C프로그램은 소스와 프로그램에서 사용할 데이터로 구성

- 소스는 컴파일과 링킹 과정을 거쳐 기계어로 번역됨

- 기계어로 번역된 코드는 메모리의 코드 영역에 저장됨

   - 코드 영역은 저장된 내용을 읽기만 가능하고 쓰기가 불가능한 메모리 영역

- 프로그램에서 사용할 변수 등의 데이터는 읽기 쓰기가 가능한 데이터 영역에 저장됨

   - 데이터 영역은 스택 영역, 힙 영역, 정적 데이터 영역으로 나누어져 있음

   - 스택과 정적 데이터 영역은 크기가 정해져 있지만 힙 영역은 malloc() 같은 함수를 통해 원하는 크기로 할당 가능

 

 

 

자료형과 기억 부류 지정자

- 변수 선언시에 사용하는 예약어와 선언된 위치에 의해 결정

- 기억 클래스는 변수의 값이 어떤 종류의 메모리에 저장되는지를 지정

- int형 변수는 4바이트인데 이 4바이트 공간이 주기억장치의 스택에 만들어지는지 CPU의 레지스터에 만들어지는지 등을 결정하는 것이 기억 부류 지정

자료형과 기억 부류 지정자
CPU와 메모리

 

컴퓨터의 프로그램 메모리 레이아웃

기억 클래스 : 자동(auto)

- 가장 많이 사용하는 기억 클래스

- int형 변수 a를 auto변수로 선언

   - auto int a; //auto는 생략이 가능하며 이 선언문은 int a;와 같은 문장

 

auto 변수의 특징

1. 함수 또는 블록의 내부에서 선언

2. 해당 함수나 블록 내에서만 유효한 지역(local) 변수

3. 기억 클래스가 명시되지 않고 선언된 변수는 모두 자동 변수. 즉 auto는 생략 가능

4. stack(스택) 공간을 일시적으로 사용

5. 함수나 블록을 진입하면 기억 영역이 확보되고, 벗어나면 기억 영역은 바로 소거됨. 단, return문으로 리턴된 값은 스택에 복사되어 외부로 전달됨

6. 초기화는 실행시 이루어지며, 초기화하지 않으면 임의의 값(쓰레기값, garbage value)을 가짐

예제 9.4