매크로 상수로 정의한 c 소스의 bool 혹은 BOOL 은 integer 값을 가지므로 2바이트(16비트) 4바이트(32비트) 혹은 8바이트(64비트) 가 되겠습니다.
마이크로소프트 플랫폼에서의 bool 은 비주얼 스튜디오 4.2 이하의 버전에서는 integer, 이후의 버전에서는 built-in type 의 1 바이트 primitive type 입니다.
또한 BOOL 은 MFC 에 내장된 클래스이므로 이것의 크기는 4바이트(32비트) 혹은 8바이트(64비트) 라고 나옵니다.
BOOL 과 bool의 차이는 msdn 에서 찾아보실 수 있습니다.
마지막으로 자바의 경우 boolean 은 1비트의 크기를 가집니다.
차이를 몸소 체험해 보고 싶으시면 sizeof() 연산자를 사용해서 직접 확인해 보실 수도 있겠고,
자바의 경우라면 sizeof 가 없고 자바 표준 문서에 boolean 이 1비트 크기라고 기록되어 있는것을 확인하실 수 있습니다.
그리고 자바에서 객체의 크기를 알아보시려면 Serializable 인터페이스를 상속받아서 디스크에 내용을 기록해 보시면 크기를 추정하실 수 있을 것 같네요.
2006.10.12 11:30:18 (*.67.220.110)
랩하는좀비
음음. 뭔가 차이가 많군요.
답변 감사드립니다. 좋은 하루 되세용~
2006.10.12 14:19:09 (*.197.167.225)
뚜우
VC++기준으로는
In Visual C++4.2, the Standard C++ header files contained a typedef that equated bool with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1. This can cause memory corruption problems if you have defined structure members of type bool in Visual C++ 4.2 and are mixing object files (OBJ) and/or DLLs built with the 4.2 and 5.0 or later compilers.
즉, VC++ 5.0이상에서는 bool은 1byte짜리 built-in type입니다
그리고 Windows Data Types으로 정의된 BOOL형은 (WIN32, MFC 등에서 쓰이는 데이터타입이죠. C++표준이 아닙니다.)
BOOL Boolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:
매크로 상수로 정의한 c 소스의 bool 혹은 BOOL 은 integer 값을 가지므로 2바이트(16비트) 4바이트(32비트) 혹은 8바이트(64비트) 가 되겠습니다.
마이크로소프트 플랫폼에서의 bool 은 비주얼 스튜디오 4.2 이하의 버전에서는 integer, 이후의 버전에서는 built-in type 의 1 바이트 primitive type 입니다.
또한 BOOL 은 MFC 에 내장된 클래스이므로 이것의 크기는 4바이트(32비트) 혹은 8바이트(64비트) 라고 나옵니다.
BOOL 과 bool의 차이는 msdn 에서 찾아보실 수 있습니다.
마지막으로 자바의 경우 boolean 은 1비트의 크기를 가집니다.
차이를 몸소 체험해 보고 싶으시면 sizeof() 연산자를 사용해서 직접 확인해 보실 수도 있겠고,
자바의 경우라면 sizeof 가 없고 자바 표준 문서에 boolean 이 1비트 크기라고 기록되어 있는것을 확인하실 수 있습니다.
그리고 자바에서 객체의 크기를 알아보시려면 Serializable 인터페이스를 상속받아서 디스크에 내용을 기록해 보시면 크기를 추정하실 수 있을 것 같네요.