Desc :

자료형의 실제 크기를 알 수 있다면

프로그래밍 과정에서 발생하는 스택 깨짐, 통신 loss 등 여러 문제에 대처할 수 있는 방법을 찾을 수 있음

 

class 크기가 다른 이유

컴퓨터 프로세서의 데이터 버스는 한 번에 8바이트 데이터를 담아 이동하는데

(64bit 운영체제에서 한 번에 처리할 수 있는 데이터의 양은 64bit, 즉 8byte이다.)

4바이트 단위로 몇 번 움직이느냐에 따라 sizeof의 결과가 달라진다

 

클래스 Temp는 int 4바이트 + bool 1바이트 = 5바이트지만

데이터 버스는 한 번 이동하여 결과가 8바이트가 됨

 

클래스 Temp1는 int 4바이트 +double 8바이트 = 12바이트지만

데이터 버스는 두 번 이동하여 결과가 16바이트가 됨

 


Source Code :

#include <iostream>

using namespace std;

class Temp{
	int no;
	bool is_on;
};
class Temp1 {
	int no;
	double db;
};

int main()
{
	cout << "char 크기 : " << sizeof('p') << endl;
	cout << "int 크기 : " << sizeof(10) << endl;
	cout << "double 크기 : " << sizeof(10.0) << endl;
	cout << "클래스 크기 : " << sizeof(Temp) << endl;
	cout << "클래스 크기 : " << sizeof(Temp1) << endl;

	return 0;
}

 


Result :

'C++' 카테고리의 다른 글

[C++] 034 중첩 순환문 for ~ continue ~ break  (0) 2021.03.18
[C++] 032, 033 중첩 조건문 if ~ else if ~ else  (0) 2021.03.18
[C++] 030 명시적 변환  (0) 2021.03.18
[C++] 029 캐스트 연산자  (0) 2021.03.18
[C++] 028 비트 연산자  (0) 2021.03.18

+ Recent posts