Rylah's Study & Daily Life
Modern C++ : 01. Memory Structure - Variables Types1 (변수 타입 in Memory) 본문
Study/C++
Modern C++ : 01. Memory Structure - Variables Types1 (변수 타입 in Memory)
Rylah 2022. 2. 3. 05:00#include <iostream>
int main() {
int a = 0;
std::cout << sizeof(int) << std::endl;
std::cout << sizeof(a) << std::endl;
return 0;
}
The following table summarizes all available integer types and their properties in various common data models:
C++가 표준은 알려진대로 integer bit이지만 그렇지만 비트에 따른 메모리 할당이 달라질 수 있다는 것을 명시하고 있는 레퍼런스이다.
#include <cstdint>
#include <iostream>
#include <array> // CPP array는 <array> 사용 권함
int main() {
static_assert(sizeof(int) == 4, "int is 4 bytes"); // 일치하지 않으면 에러 발생 int 사이즈가 4인지 측정
//int a = 0;
std::cout << "size of values " << std::endl;
std::cout << "Size of Int : " << sizeof(int) << std::endl;
std::cout << "Size of int8_t : " << sizeof(int8_t) << std::endl;
std::cout << "Size of int64_t : " << sizeof(int64_t) << std::endl;
std::cout << std::endl;
// 메모리 공간을 제대로 설계하기 위한 변수 선언
int a;
uint32_t b;
int8_t d;
// array
std::cout << "size of array values " << std::endl;
int arr[10];
std::cout << "Size of arr[10] : " << sizeof(arr) << std::endl;
std::array<int, 5> iarr;
std::cout << "Size of array<int, 5> : " << sizeof(iarr) << std::endl;
std::cout << std::endl;
uint64_t ui8;
float f4;
std::array<uint8_t, 5> uia5;
std::cout << "Size of uint8_t array(5) : " << sizeof(uia5) << std::endl;
uint64_t* ui64ptr = &ui8;
std::cout << "int64_t ptr : " << sizeof(ui64ptr) << std::endl;
std::cout << "ui8 Address : " << (uint64_t)ui64ptr << std::endl;
return 0;
}
포인터는 32비트에서는 4바이트 64비트에서는 고정적으로 8바이트를 가진다.
Type | bytes |
long | 4 bytes |
int | 4 bytes |
short | 4 bytes |
int32_t | 4 bytes |
int64_t | 8 bytes |
array<int, 5> | 20 bytes |
ptr | 8 bytes |
컴퓨터는 top 위치에 몇번째 있냐만 계산을 한다.
ui64ptr -> ui8(address) : 162064219928 |
uia8 |
f4 |
ui8 |
'Study > C++' 카테고리의 다른 글
Modern C++ : 01. Memory Structure - Stack Memory (0) | 2022.02.03 |
---|---|
Modern C++ : 01. Memory Structure - Variables Types2 (변수 타입 in Memory) (0) | 2022.02.03 |
Modern C++ : 01. Memory Structure - Variables in Memory (0) | 2022.02.03 |
Modern C++ : 06. Static Members (0) | 2021.12.05 |
Modern C++ : 06. Object Alignment (0) | 2021.12.05 |