포인터 관련된 질문드립니다.
글쓴이: paeksj98 / 작성시간: 월, 2010/04/05 - 10:20오전
char buff[256];
char *p;
int len=0;
p = buff;
if( data1== TRUE)
{
*(u8 *)p = 0x11;
p = p + (sizeof(u8));
*(float *)p = A1.Msg.tmp1; //float
p = p + (sizeof(float));
len +=5;
}
if(data2== TRUE)
{
*(u8 *)p = 0x12;
p = p + (sizeof(u8));
*(double *)p = A2.Msg.tmp2; //double
p = p + (sizeof(double));
len +=9;
}
double로 선언될걸 float로 선언해서 하면 잘되는데 double로 선언하고 *(double *)p = A2.Msg.tmp2; 이런식으로 처리를 하면 실행 중 문제가 되네요. 제가 생각하기에는 특별히 이상한 곳이 없는데....
*(double *)p = A2.Msg.tmp2; //double 실행시 hard fault exception이 나네요.
왜 이런 문제가 나오는지 알아야 뭔가를 하는데 이해가 되질 않네요. 이런 문제가 나올만한 원인좀 조언해주세요.
Forums:
정렬제한으로 검색해보세요
:)
:)
댓글 달기