구조체 형변환 관련해서 질문이 있습니다.
글쓴이: Pike / 작성시간: 토, 2015/06/27 - 11:11오전
#include <stdio.h>
#pragma align
typedef struct Data1
{
int a1;
short a2;
//short a3;
int a3;
};
typedef struct Data2
{
int b1;
int b2;
short b3;
};
void main()
{
Data1 *d1;
Data2 *d2 = new Data2();
d2->b1 = 1;
d2->b2 = 131074;
d2->b3 = 1;
d1 = (Data1*)d2;
printf("%d\n",d1->a2);
printf("%d\n",d1->a3);
}여기서 a3의 값이 1이 나오는데요
어제서 a3의 값이 0x00020001이 아니라 1이 될까요?
memcpy를 사용했을때는 값이 0xcccc0001이 나오더군요
0x00020001이 안나오는 이유는 무엇인가요?
Forums:


packing 문제로 보이는군요. struct
packing 문제로 보이는군요. struct packed attribute 로 검색해보세요.
---
http://coolengineer.com
댓글 달기