구조체 포인터 멤버 변수 할당에 관하여..
글쓴이: leboum / 작성시간: 수, 2014/04/09 - 10:43오후
데이터 통신 중에 문제가 있어서 이렇게 글을 올립니다.
구조체 포인터 멤버 변수 할당에 대하여... 궁금한것이 있습니다.
char * tempData = new char[1000]; for (int i = 0; i < 1000; i++) { tempData[i] = i; }
0,1,2,3,4,5,6,7,8,9 ......
이렇게 데이터를 만들었습니다.
이 데이터를 아래에 구조체에 포함시켜서 데이터를 전달할려고 합니다.
typedef struct { int handle; unsigned int length; char * pData; } FILE_WRITE; FILE_WRITE * pFW = new FILE_WRITE; pFW->handle = 10; pFW->length = 1000; pFW->pData = new char[1000] memcpy(pFW->pData, tempData, 1000);
위에서 만든 데이터를 메모리 복사합니다.
이렇게 만들어진 pFW 데이터를
다른곳에서 char *으로 받을려고 하는데요.
char * pResult = new [1008]; memcpy(pResult , pFW , 1008);
받을때 제 예상에는 10,1000,1,2,3,4,5,6,7,8 이 데이터가 있다고 생각하고
출력해보면
10,1000,0,0,255,11,22,33,55,55,5,566,,
와같이 이상한 값이 나오는데요.
이유가 뭔지 알수 있을까요??
전달 받은 길이는 보낸 구조체 크기 + 할당한 길이 만큼 왔습니다.
char형의 배열로 전달 해야하는게 맞는걸까요???
Forums:
그림을 그려보시면, pFW 가 가리키는 구조체와,
그림을 그려보시면, pFW 가 가리키는 구조체와, pFW->pDATA 가 가리키는 1000바이트의 일련 배열이
"연속된 1008바이트" 공간을 이룬다는 보장이 없다는 것을 알 수 있을 겁니다.
좋은 하루 되세요!
http://gcc.gnu.org/onlinedocs
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Zero-Length.html
댓글 달기