2021. 3. 8. 18:59ㆍC++
이번에는 상수와 메모리 구조에 관해 알아보겠습니다.
●상수
- 한번 정해지면 절대 바뀌지 않을 값들
- constant의 약자인 const를 붙임 (변수를 상수화)
- const가 붙으면 반드시 초기값을 지정해야 함
상수는 다양한 하드 코딩된 상태에서 유용하게 사용될 수 있습니다.
비트 플래그를 예로 들어보겠습니다.

4가지 상태를 상수로 지정한 후

상태를 상수로 지정하게 되면 직접 숫자를 쓰지 않을 수 있습니다.
그리고 만약 다른 상태가 추가된다 하여도 모든 숫자를 바꾸지 않고 상수의 값만 다르게 지정해주면 되기 때문에 수정에 있어서도 용이하게 사용될 수 있습니다.
다음은 메모리 구조에 대해 알아보겠습니다.

스택 영역은 간단히 말해 C++각각의 함수 안에서 정의된 변수를 저장합니다.
그리고 스택 영역에 저장된 변수를 지역변수, 매개변수라 하고 함수 호출이 끝나게 되면 지역변수와 매개변수는 소멸하게 됩니다.
데이터 영역은 .data영역, .bss영역, .rodata영역으로 나뉘는데
-. data영역 : 변수를 초기화한 상태 저장
-. bss영역 : 변수를 초기화하지 않은 상태 저장
-. rodata : const char*와 같이 읽기 전용 데이터 저장
으로 나뉠 수 있습니다.
힙 영역은 사용사가 데이터를 동적으로 할당할때 저장되는 공간입니다. 스택 영역에서는 함수 호출이 끝나면 자연스레 데이터가 소멸하지만 힙 영역에서는 사용자가 직접 동적 할당을 해제해주어야 데이터가 소멸하게 됩니다. 따라서 동적 할당을 해제해주지 않으면 메모리가 누수되는 memory leak현상이 발생하기 때문에 이 부분은 신경 써서 작성해 주셔야 합니다.
따라서 변수를 어디에 어떻게 정의하냐에 따라 코드가 크게 달라질 수 있기 때문에 변수를 선언할 때에 주의를 기울여야 한다는 것을 알 수 있습니다.
'C++' 카테고리의 다른 글
| C++) 09. 반복문 (0) | 2021.03.11 |
|---|---|
| C++) 08. 분기문 (0) | 2021.03.09 |
| C++) 06. 비트 연산과 비트 플래그 (0) | 2021.03.07 |
| C++) 05. 비교, 논리 연산자 (0) | 2021.02.17 |
| C++) 04. 산술, 증감 연산자 (0) | 2021.02.15 |