조준회님
관심을 가져 주셔서 대단히 고맙습니다.
결국 제가 문제를 제기하고 제가 답하는 형태가 되었네요.
저의 문제는 포인터에 sizeof를 한것은 아니었으며
다음의 문제가 있었습니다.
이는 정우철님이 쓰신 알기쉬운 볼랜드 C++ Builder 3(p965)에서
그 해답을 찾은 것임을 밝힙니다.
C++ Builder의 컴파일러는 Dword Align을 사용하기 때문에
바이트나 워드를 사용할 때 주의를 해야하며
//------------------------------
class IFR_Route {
double Lon;
double Lat;
unsigned char RepType;
SmallString<11> Name;
};
//-----------------------------
의 경우에는 sizeof(IFR_Route)의 경우 32 Byte가 나옵니다.
그러나
//------------------------------
#pragma pack(1) // 1은 byte aligned, 2는 word aligned, 4는 dword aligned 임
class IFR_Route {
double Lon;
double Lat;
unsigned char RepType;
SmallString<11> Name;
};
//-----------------------------
#pragma pack() //dword aligned 임
하게 되면 정확하게 29byte가 되어 자료를 정확하게 읽을 수 있습니다.
구정연휴 잘 지내셨겠지요?
좋은 밤 되시기 바랍니다.
KooJ
|