[완료] 구조체 내용을 똑같이 만들어서 두개의 시스템에서 돌리는데..
글쓴이: lemk000 / 작성시간: 일, 2011/11/20 - 5:07오후
어제 소켓통신에 문제가 있어서
제생각에 코드상에는 문제가 없는것같아 구조체의 크기를 sizeof로 찍어보았습니다.
근데 왜그런지 도무지 이해를 못하겠는데요
typedef struct _CGPointd { double x; double y; } CGPointd; typedef struct _Message { Byte messageType; CGPointd point; char text[40]; } Message;
지금 메시지 타입을 저렇게 정해놓고 sizeof를 해서 크기를 찍었습니다.
시스템은 인텔 코어2듀오가 깔린 맥 osx이고, 다른한쪽은 a4가 달린 아이폰입니다.
messageType, point, text를 sizeof로 찍으면 각각 1, 16, 40 의 결과가 나옵니다. 양쪽 다요
뭐 당연하겠죠
근데 sizeof로 Message 자체를 찍으면 아이폰에서는 60바이트가 찍히고 맥에서는 64바이트가 찍힙니다.
안에 내용이 같은데 어떻게 이런일이 벌어지는지를 모르겠습니다. 도와주세요 ㅜ
Forums:
컴파일러가 입출력 최적화를 위해 패딩을 집어 넣은
컴파일러가 입출력 최적화를 위해 패딩을 집어 넣은 듯.
그렇네요;
전 패딩비트라는 개념 존재를 모르고있었는데;
다행이 이것때문이었습니다. 이것때문에 2일밤샜네요
gcc 컴파일러를 쓰신다면
__attribute__((packed))를 붙여주세요.
Just do it!
댓글 달기