# 목표
Cpp 에서 각 변수 마다 메모리를 어떻게 allocation (할당) 되는지 알아보는 시간을 가진다.
시작하기 전, 변수에 대한 내용을 정리하고 시작 하겠다.
# 변수
1. 실제 메모리는 Stack 구조로 쌓인다.
2. 변수에 접근하는 방법은 탑 위치 ( Stack의 맨위) 에서 몇 번째 떨어져있는지 확인 하며 변수의 위치 확인
2-1. Low level로 설명하면 격자 같이 메모리에 저장된다.
# 변수의 주소값을 확인하는 코드
# 내용
이번 내용에서는 메모리의 크기 (size)가 어떻게 할당 되는지 확인해본다.
일단 1 바이트는
1 byte = 8 bit
int = 4 byte
Cpp의 sizeof() 함수는 해당되는 변수나 자료형의 크기를 바이트 단위로 반환한다.
다른 자료형의 크기는 해당 사이트를 참조 한다.
- Cpp referece.com
https://en.cppreference.com/w/cpp/language/types
Fundamental types - cppreference.com
(See also type for type system overview and the list of type-related utilities that are provided by the C++ library) [edit] Void type void — type with an empty set of values. It is an incomplete type that cannot be completed (consequently, objects of typ
en.cppreference.com
위 표를 보면 int 와 unsigned int 의 크기는 at least 16이라고 표기 되어 있다.
이는 컴파일러 혹은 개발 환경 마다 크기가 달라질 수 있다는 것을 의미 한다.
실무에서는 변수의 크기를 할당 함에 있어서 엄격해야하기 때문에 다음과 같은 방법을 사용한다.
static_assert() 함수를 이용하면 파라미터의 내용이 참일 경우 정상적으로 컴파일 된다.
int 형의 크기가 4 byte 이기 때문에
해당 코드는 컴파일이 정상적으로 이루어 진다.
하지만, 다른 컴파일러 일 경우 동작하지 않을 수 있다.
컴파일러의 종류와 상관없이 엄격하게 메모리 관리를 해야하는 경우
int8_t ( 1바이트)
int64_t (8바이트)
데이터 타입을 사용할 수 있다.
이 두개의 데이터 타입은 std 의 array에서도 활용 가능 하다.
'C++' 카테고리의 다른 글
변수와 메모리 (1) | 2023.11.03 |
---|---|
Vector Container (0) | 2023.10.11 |
표준 템플릿 라이브러리 STL (0) | 2023.10.11 |
C/C++ (0) | 2023.10.11 |
객체 지향 프로그래밍 (0) | 2022.09.13 |