쉬운거 같은데..수련부족입니다.
글쓴이: iimec2 / 작성시간: 목, 2005/08/11 - 2:00오전
질문한 것=================
임의의 구조체가 있는데요..
struct temp {
__u8 bLengthl
__u8 bDescriptorType;
} __attribute__ ((packed));
캐릭터형 포인터 변수에 char * buffer = (char) malloc(40);
메모리를 할당합니다. ..
여기서 Struct temp *a; 라는 구조체 포인터 변수를 선언합니다.
그리고 buffer를 다음과 같이 casting을 하여 buffer의 주소값을 줍니다.
Struct temp *a= (Struct tree*) buffer;
그러면
a라는 포인터를 가지고 접근 할 때 tree 구조체 안에
값을 참조 할 수 있나요? a-> bLenth; 이렇게
만약 malloc를 할때 tree의 크기와 똑같은 크기로 할당 받는다면
이때는
a-> bLenth; 가능한가요??
제가 잘못 알고 있는지..아직 수련이 부족하네요..
도와주세요..모든 분들...
Forums:
Struct temp *a= (Struct tree*) buffer;
Struct temp *a= (Struct tree*) buffer;
위와 같이 하고 난 다음에는
a->bLength ;
이렇게 쓸 수는 있지만, 만약 buffer 의 malloc() 해서 할당된
바이트 수가 struct temp 보다 작다면은 임의의 메모리 값을
참조하는 형국이 되기 때문에 어떻게 작동할 지 모릅니다.
(잘 되는 것처럼 보일 수도 있고, 뻑날 수도 있고..ㅡ.ㅡ;;)
직접 해 보시면 될 듯 한데요.. 그런데 왜 그렇게 사용하려는지요??
직접 해 보시면 될 듯 한데요.. 그런데 왜 그렇게 사용하려는지요??
이해가 되질 않는군요??
원본 코드를 올려주세요. 그럼 원래 개발자의 의도를 설명 해 드리죠..
Re: 쉬운거 같은데..수련부족입니다.
구지 이런식으로 하고 싶으시다면
다음과 같이 하시길
char * buffer = (char*) malloc(sizeof(struct temp));
temp 구조체의 크기를 정하는것보다 편할겁니다. :D
댓글 달기