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