관리 메뉴

FU11M00N

C언어 자료형과 메모리의 기본적인 이해 본문

Programming/C Language

C언어 자료형과 메모리의 기본적인 이해

호IT 2020. 4. 3. 21:53

안녕하세요! 이번엔 포인터를 하기 위해 기본적인 개념을 알아보도록 하겠습니다.

 

구분  크기(byte) 범위
정수형 char 1byte ~128~127
short 2byte ~32786~32767
int 4byte -2.147.483.648 ~ 2.147.483.647
long 4byte -2.147.483.648 ~ 2.147.483.647
long long 8byte ~9.223.372.036.854.775.808~
9.223.372.036.854.775.807
실수형 float  4byte +- 3.4 x 10^-37 ~ +-3.4x10^38
double 8byte += 1.7 x 10^-307 ~ +- 3.4 x 10^308
long double 8byte이상 double 이상

(long 형은 32비트 운영체제에서 4 바이트, 64비트 운영체제에서 8 바이트로 동작하기 때문에 다를 수도 있습니다!

하지만 윈도우에서는 32비트든 64비트이든 4byte가 나옵니다.)

 

다들 C 공부를 하셨었다면 아시겠지만 앞에 나오는 개념 중 하나인,

각 타입들마다 바이트표현할 수 있는 정도가 다릅니다.

 

여기서 짚고 가야 할 것은 , 모든 자료형은 각자 일정한 크기를 가질 수 있고 앞서 나가 구조체와 배열도 그러합니다.

위의 표에 있는 자료형들은 변수로 선언되면 메모리에 그 변수에 맞는 크기로 메모리를 사용하게 됩니다.

 

사진 1-1

기본적인 CPU와 램의 동작원리입니다. CPU와 보조기억장치는 바로 데이터 전송이 안되기 때문에

주기억장치인 RAM을 통해서 동작이 됩니다. 

 

사진 1-2

사진 1-2는 RAM의 구조입니다. Random access Memory라고도 불리며 기억된 정보를 읽어내기도 하고 다른 정보를 기억시킬 수도 있는역할을 합니다.

 

 

1. 스택 영역 (Stack Area)

스택 영역에서는 지역변수와 매개변수가 할당됩니다. 스택에 저장되어있는 것들은

선언되었던 함수를 빠져나가면 소멸이 됩니다.

 

 

2. 힙 영역 (Heap Area)

힙 영역에서는 개발자가 메모리를 효율적으로 쓰기 위해 동적으로 데이터를 저장시킬 수 있습니다.

데이터 영역과 스택 영역과는 다르게 메모리를 사용하고 나서 다시 해제를 해야 할 필요가 있기 때문에

free() 함수를 사용하여 메모리 할당을 해제해줍니다!

 

 

3. 데이터 영역 (Code Area)

 

데이터 영역에는 전역 변수와 정적변수로 으로 선언되는 변수들이 할당됩니다.

 

 

 

데이터 영역에는 전역변수와 static으로 선언되는 static 변수가 할당됩니다.

 

이 영역에 할당되는 변수들은 프로그램의 시작과 동시에 메모리 공간에 할당되어, 프로그램 종료 시까지 남아있게 됩니다.

 

 

 

4. 코드 세그먼트 (Code Segment)

 

코드 세그먼트 영역은 실행할 프로그램의 코드가 저장되는 메모리 공간입니다.

CPU는 코드 세그먼트 영역에 저장된 명령문들을 하나씩 가져가서 실행을 합니다.

 

 

 다음에는 C언어에서 각 타입별로 변수들이 어디에 저장되고 크기는 얼마나 차지하는지 알아보도록 하겠습니다!

Comments