-
C++ 기억 클래스Visual Studio/C++ 기초 2014. 3. 2. 16:28
기억 클래스는 어떤 기억 장소에 할당할 것인지를 지정합니다. 데이터를 보관하기 위해서 CPU에 있는 레지스터와 주기억장치를 사용합니다.
대부분의 자료는 주기억장치를 사용해서 처리되는데, 주기억장치는 일반적인 메모리와 스택으로 구분해서 사용합니다.
CPU와 레지스터, 일반적인 메모리, 스택 가운데 어디에 할당하느냐에 따라서 해당 변수에 대한 유효 범위와 유효 기간이 달라집니다.
할당 방식의 종류
1. 동적 할당
동적 영역에 지정된 변수는 컴파일할 때 변수 할당을 위한 명령어를 번역만 해놓고 실제 기억 공간 할당은 실행할 때 이루어집니다.
그리고 동적 할당된 변수의 유효 범위가 지나면 자동으로 소멸됩니다. 결국 동적 할당은 기억 공간의 낭비를 최소화할 수 있습니다.
동적 할당을 위해서 주로 스택을 사용합니다. 스택은 가장 마지막에 입력된 자료가 가장 먼저 출력되는 LIFO(Last In First Out)구조로 되어 있습니다. 그리고 자료의 입력과 출력이 한쪽에서만 이루어지는 구조입니다.
2. 정적 할당
정적 영역을 사용하는 변수는 컴파일할 때 기억 공간을 확보하고, 프로그램을 실행할 때는 변수를 위한 기억 공간 확보가 이루어지지 않습니다. 그렇기 때문에 실행하는 도중에 변수를 위한 기억 공간 할당 시간이 발생하지 않는 장점이 있고, 프로그램이 종료할 때 까지 기억장소에 존재하기 때문에 값을 계속 유지할 수 있습니다.
동적 영역과 정적 영역은 서로 다른 기억 공간을 가지고 있습니다
#include <iostream>
using namespace std;void main()
{
int a, b;
static int x, y;cout<< "a, b의 주소 : " << &a << ", " << &b << "\n";
cout<< "x, y의 주소 : " << &x << ", " << &y << "\n";
}컴퓨터마다 주소 값이 다를 수 있습니다.
'Visual Studio > C++ 기초' 카테고리의 다른 글
C++ 외부 변수 extern (0) 2014.04.11 C++ 자동 변수 (0) 2014.04.08 C++ 문자열 정렬 (0) 2013.12.06 C++ int argc, char *argv[] (1) 2013.12.05 C++ 포인터 연산 (0) 2013.11.25