Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

변수와 메모리공간 본문

C/C++

변수와 메모리공간

보즈리 2014. 12. 2. 03:56

1. 변수

 

 

 저장 영역

외부 소스 접근 여부

함수 내 선언

 특징

 전역변수

 데이터

 O

 X

 정의를 한 번만 할수 있다

 정적변수

 데이터

 X

 X

 자료형 앞에 static을 붙인다

 지역변수

 스택

 X

 O

 함수가 살아있는 동안에만 변수가 존재

 정적 전역변수

 데이터

 X

 X

 전역변수이지만 외부 소스에서 접근 불가

 정적 지역변수

 데이터

 X

 O

 함수를 빠져나와도 변수에 저장된 값이 사라지지 않는다



const : 자기 자신의 왼쪽에 있는 것을 상수화 (단, 가장 왼쪽에 있을 때에는 오른쪽을 고정한다)

ex) 'const int *const ptr' 이면, 'int, *' 을 상수화(고정)한다.


extern : 함수에 붙여주면 외부에 공개가 된다. 즉, 외부 소스에서 접근 허용이 가능하다.

           (extern 는 어딘가에 존재하는 전역변수라는 의미, 보통 C 표준라이브러리에 저장된다.)


static : 전역 인자로 취급이 되지만 선언된 영역에서만 호출이 가능하다.

     (지역이 사라져도 변수가 유지되어야 되는 성질을 보완하기 때문에 전역 인자로 취급)


Tip. a++와 ++a의 차이점

a = 2 일때,

1) b = a++ 이면, a값이 저장되고 a가 증가된다. 즉 결과값 = 2

2) b = ++a 이면, a가 증가되고 a값이 b에 저장된다. 즉 결과값 = 3 (값을 단순증가시킬 때 사용)

 


2. 메모리 공간

 

코드(Code)

 실행코드가 들어 있는 곳


데이터(Data)

 초기화된 전역변수나 정적변수를 저장


BSS(Block Started by Symbol)

 초기화되지 않은 or 0이나 NULL으로 초기화된 전역변수나 정적변수를 저장


힙(Heap)

 malloc / free 등으로 실행시간시 할당되는 메모리 공간용 (동적 메모리 할당용)


스택(Stack)

 임시 저장용, 주로 함수에 대한 내용을 저장할때 사용 (지역변수, 매개변수, 반환값 등)



Comments