스트럭쳐의 메모리 할당 단위.

ututlinux의 이미지

#include <stdio.h>

struct A{
        int a;
        char b;
};
struct B{
        struct A a;
        char b;
};

main()
{
        struct B *b;
        char c[20] = "ABCDEFGHIJK";

        b = (struct B *)c;

        printf("%c \n", b->a.b);
        printf("%c \n", b->b);
}

결과

E
I

구조체를 메모리 잡을때 단위는 4의 배수로 잡는 것 같습니다.
(캐릭터 3개라도 4바이트로 잡고 캐릭터 5개면 8바이트로...)
위의 코드로는 사람 생각으로면 결과에서 I가 아니라 F가 나와야 하는 거 같은데.
실제 시스템에서는 그렇게 안되는 걸로 알고 있습니다.

제가 몰라서 안되는 건지 원래 불가능한지를 알고 싶습니다.

패킷의 내용을 찝어내야 하는데 저 부분에서 제가 만든 구조체에서 패킷을 몇개 점프를 해버리던데.
이거 정확이 쪽쪽 찝어낼수 있는 방법없는지요.

여러 고수님들의 고견 부탁드립니다.

랜덤여신의 이미지

'패딩' 을 말씀하시는 것인가요?
이 게시판에서 '패딩' 으로 검색해보세요. :)

ututlinux의 이미지

잘 찾아서 잘 보았습니다.

감사합니다.