|
그것 뿐만 아니라 Shift연산도 경우에 따라 결과가 달라진다는 이야기도 있던데요
민식 님이 쓰신 글 :
: Project - Option - Advanced Compiler - Data Alignment 항목의 설정을 Byte 로 해보세요.^^
:
: 설정에 따라 구조체 메모리 할당량이 틀려집니다.
:
:
: 이즈 님이 쓰신 글 :
: : typedef struct
: : {
: : char im1;
: : WORD im3[10];
: : } TEST1;
: :
: : typedef struct
: : {
: : char im1;
: : char im2;
: : WORD im3[10];
: : } TEST2;
: :
: : sizeof(TEST1);
: : sizeof(TEST2);
: :
: : 의 결과가 의외네요.. 같습니다..
: : 그리고
: :
: : typedef struct
: : {
: : char im1;
: : WORD im3[10];
: : } TEST1;
: :
: : typedef struct
: : {
: : char im1;
: : DWORD im3[10];
: : } TEST2;
: :
: : sizeof(TEST1);
: : sizeof(TEST2);
: :
: : 의 결과 또한 의외네요.. char im1 에 할당되는 메모리 사이즈가 틀립니다.
: :
: : 대충 왜그런지 이해가 가지만.. 큰 버그를 프로그램에 심어 놓을뻔 했네요--;;
: :
: : 약간 복잡하게 메모리를 사용하는 루틴을 구현하다가
: :
: : 저 스스로를 믿지 못해 라인 단위의 검증을 거치는중에 발견한 사항이네요..
: :
: : 항상 sizeof 로 size를 구해 쓴다면 문제가 되지 않겠지만
: :
: : size를 직접 계산해 사용하거나하면 큰일 나겠습니다 휴.. 다행이다..
: :
: :
: : 다른 분들도 이 사항으로 안좋은 기억이 있으신가요?^^
|