검색결과 리스트
storage class에 해당되는 글 1건
- 2011.03.27 기억부류(Storage Class) / 변수
글
기억부류(Storage Class) / 변수
언어로그/C/C++
2011. 3. 27. 20:40
데이터, 스택, 힙 영역
추상적인 분류이지만 프로그램을 위한 메모리 공간은 크게 데이터영역, 스택(Stack)영역, 힙(Heap)영역으로 나뉜다.
데이터 영역에는 전역(Global)변수와 정적(Static) 변수에게 할당되는 메모리 공간으로 프로그램 시작부터 끝나는 시점까지
존재하는 메모리 영역이다. 스택영역은 블럭 또는 함수 Scope 에 할당되는 메모리 공간이며, 제어흐름이 활성화 되었을 때
생성된다. 힙 영역은 프로그램이 유동적으로 사용할 수 있는 메모리 공간으로, 프로그래머가 해당 메모리를 필요한 만큼
사용하고 난 뒤 메모리를 해제해야 한다.
사용하고 난 뒤 메모리를 해제해야 한다.
레지스터 변수, 정적변수
변수의 타입 앞에 register 라는 키워드를 사용하여, 레지스터 변수를 선언할 수 있다. 레지스터 변수는 CPU의 메모리가 아닌
레지스터에 데이터를 저장하여, 데이터 접근 속도를 향상시킨다. 하지만 register 키워드를 사용했다고 무조건 레지스터에
데이터를 저장하는 것은 아닌다. 일반적으로 CPU에 존재하는 30여 가지의 레지스터 중 1~2 개의 레지스터가 남는데, 이
레지스터들이 사용되고 있지 않을 경우에 사용되며, 그렇지 않을 경우 메모리에 할당된다.
register int i, j; // 레지스터에 i, j 생성을 요청.
정적(Static) 변수는 전역변수와 같이 메모리의 데이터 영역에 생성이 된다. 지역 정적변수는 함수가 종료된 후에도
그 값을 사용하고 싶을 경우에 쓰인다. 함수 내부에 선언된 지역정적 변수는 함수 호출시점에 최초로 생성이 되며,
이후 메모리 데이터 영역에 프로그램 종료시점까지 유지가 된다.
void func()
{
static int i = 0; // 연이은 호출에도 처음 생성된 i가 사용됨.
i++;
}
'언어로그 > C/C++' 카테고리의 다른 글
| 라인 입출력 함수 (0) | 2011.03.27 |
|---|---|
| 배열의 이해 (0) | 2011.03.27 |
| 기억부류(Storage Class) / 변수 (0) | 2011.03.27 |
| 전역변수와 지역변수 (0) | 2011.03.27 |
| 함수의 이해 (0) | 2011.03.27 |
| 포인터의 이해 (0) | 2011.03.11 |