|
원하는대로 보내면 됩니다.
단, 받는 컴퓨터 프로그램도 반드시 같은 개발툴로 만들어야 합니다.
strcut a { char b, int c, short d; } e; 에서
e의 변수형에 따른 메모리는 7바이트지만, 실제 할당된 메모리 크기는 12바이트(c++빌더)를 차지합니다.
개발 언어마다 틀립니다.
data align 이라고 해서 컴파일러가 속도를 위해서
크기를 정렬하기 때문입니다.
이것은 컴파일러 옵션에서 조절할 수 있습니다.
같은 개발툴로 만들면 data align 규칙이 같기 때문에 문제 없이 받을 수 있습니다.
개발툴이 틀린 경우를 생각해서
#pragma pack(1);
struct ... 생략
#pragma pack();
이렇게 #pragma pack으로 묶어주면 실제 바이트 만큼만 메모리를 할당하고 전송도 실제 바이트 만큼만 합니다.
아니면 구조체를 설계할 때,
struct a { char b; char c; short d; int e; } f;
이렇게 4바이트 align이 맞게 맞추어서 만들면
f의 크기는 8바이트이고, 실제 메모리도 8바이트만 할당됩니다.
위의 모든 이야기는 C++빌더의 경우이고, 다른 컴파일러에서는 다른 결과값을 나타낼 수 있습니다.
질문 님이 쓰신 글 :
: 패킷 전송 시
: |헤더|패킷 데이터| 이런 형태로 보내는데
:
: 패킷 데이터를 보낼때 int타입과 char 타입을 섞어서 보냅니다
: 즉 구조체 안에 int, char 멤버변수가 있고 그 멤버변수 안에 값을
: 넣어서 전달하고 있는데요
:
:
: 패킷은 4byte단위로 보내야된다고 해서요
: 그럼 char 타입을 보낼땐 따로 4byte에 맞게 크기를 변경해 줘야하나요?
|