반응형
C, C++, Java의 자료형태에 따라 할당되는 메모리크기를 살펴보면 아래 표와 같다.
[자료크기 단위: Bytes]
자료형태 | Standard C | C++(Windows 32bit) | Java |
char | 1 | 1 | 1 |
short | 2 | 2 | 2 |
int | 2 or 4 | 4 | 4 |
long | 4 | 4 | 8 |
long long | 8 | 8 | - |
float | 2 or 4 | 4 | 4 |
double | 4 or 8 | 8 | 8 |
boolean | 1 | 1 | 1 |
대표적인 자료형태만을 본 것인데, Java의 경우 char(1) < short(2) < int(3) < long (4) 처럼 규칙적으로 증가하여 명확한데 반해, 표준 C와 C++의 경우는 int에 대해 크기의 구분이 명확하지 않다. 실제로 CPU와 그에 따른 컴파일러에 따라 int가 2 Bytes인것도 있고, 4 Bytes인 것도 있다.
따라서, 특정 CPU에 대해 코딩을 할 때는, 혹은 CPU에 관계없이 동작되는 코딩을 하고자 할 때는, 컴파일러에서 결정하는 자료형의 크기에 따라 코딩이 좌우되지 않도록 할 필요가 있어, 다음과 같이 별도로 자료형을 정의하고 사용하는 경향이 많다.
typedef char u8;
typedef unsigned short u16;
typedef unsigned long u32;
typedef unsigned long long u64;
실제 코드내에서 특정 자료형의 크기를 알고자 할 때는 sizeof를 사용해서 알아낸다.
즉, 자료형 double이 몇 bytes의 메모리를 사용하는지 알아내는 것은, sizeof(double)을 통해서 알 수 있다.
반응형
'암호화프로그래밍 > (Old)C-BIGINT(부록)' 카테고리의 다른 글
부록3. 도우미 함수들 (0) | 2013.06.25 |
---|---|
부록2. Visual Studio를 이용한 C 프로그래밍 예제 (0) | 2013.06.20 |