c++ 자료형의 크기(size of)
728x90
#include <iostream>
using namespace std;
class Temp
{
int no;
bool is_on;
};
int main()
{
cout << "char 크기: " << sizeof('p') << endl;
cout << "int 크기: " << sizeof(10) << endl;
cout << "double 크기: " << sizeof(10.0) << endl;
cout << "클래스 크기: " << sizeof(Temp) << endl;
return 0;
}
자료형의 실제 크기를 알 수 있다면 프로그래밍 과정에서 발생하는 스택 깨짐, 통신 loss 등 여러
문제에 대처할 수 있는 방법을 찾을 수 있습니다.
char 의 크기는 1바이트, int의 크기는 4바이트, double 의 크기는 8바이트 입니다.
클래스 Temp의 크기 결과가 8바이트인데 이상하지 않나요?
int 4 바이트와 bool 1바이트를 더하면 분명 5바이트 입니다.
이건 컴퓨터 프로세서의 데이터 버스와 관련이 있는데, 데이터 버스는 한번에 4바이트 데이터를 담아 이동합니다.
그래서 4바이트 단위로 몇 번 움직이느냐에 따라 sizeof의 결과가 달라집니다.
클래스 Temp는 5바이트이기 때문에 데이터 버스는 두번 이동합니다.
그래서 4바이트를 담는 버스가 두 번 이동하여 결과는 8바이트입니다.
728x90
'C++ > c++ - 알아두면 좋은 예제200' 카테고리의 다른 글
c++ 실수 소수점 버리기 올리기(floor, ceil) (0) | 2020.10.26 |
---|---|
c++ 반복문을 이용한 피보나치 수열 (0) | 2020.10.26 |
c++ 캐스트 연산자 (0) | 2020.10.25 |
c++ 비트 연산자 이해하기 (0) | 2020.10.25 |
c++ 조건부 삼항 연산자 이해하기(? :) (0) | 2020.10.25 |
댓글
이 글 공유하기
다른 글
-
c++ 실수 소수점 버리기 올리기(floor, ceil)
c++ 실수 소수점 버리기 올리기(floor, ceil)
2020.10.26 -
c++ 반복문을 이용한 피보나치 수열
c++ 반복문을 이용한 피보나치 수열
2020.10.26 -
c++ 캐스트 연산자
c++ 캐스트 연산자
2020.10.25 -
c++ 비트 연산자 이해하기
c++ 비트 연산자 이해하기
2020.10.25