안녕하세요.

말씀을 보고 바로 프로그램을 작성해서 확인해 보았습니다.
그러나 PC에서 실행하나, EZ-X5에서 실행하나, 정상적으로
똑 같은 형태로 출력되었습니다.

프로그램 소스를 올려 주시면 저도 확인해 보겠습니다.

참고로 제가 확인한 프로그램입니다.

#include <stdio.h>
#include <string.h>

int main()
{
   char  array[20];
   int   ndx;
  
   memset( array, 0, 20);
  
   array[0] = 0x01;
   *( (short *)&array[1]) = 0x1234;
  
   for ( ndx = 0; ndx < 20; ndx++)
   {
      printf( "array[%d] = %xn", ndx, array[ndx]);
   }
}

PC에서 실행하든 EZ-X5에서 실행하든 똑 같이 아래와 같이 출력되었습니다.
[root@ez-x5 test_fun]$ ./a.out    
array[0] = 1
array[1] = 34
array[2] = 12
array[3] = 0
array[4] = 0
array[5] = 0
array[6] = 0
array[7] = 0
array[8] = 0
array[9] = 0
array[10] = 0
array[11] = 0
array[12] = 0
array[13] = 0
array[14] = 0
array[15] = 0
array[16] = 0
array[17] = 0
array[18] = 0
array[19] = 0

참고로 테스트할 때 사용한 162를 대입하면 아래와 같습니다.

#include <stdio.h>
#include <string.h>

int main()
{
   char  array[20];
   int   ndx;
  
   memset( array, 0, 20);
  
   array[0] = 0x01;
   *( (short *)&array[1]) = 162;
  
   for ( ndx = 0; ndx < 20; ndx++)
   {
      printf( "array[%d] = %2xn", ndx, (unsigned char)array[ndx]);
   }
}

--------------------------------
]$ ./a.out
array[0] =  1
array[1] = a2
array[2] =  0
array[3] =  0
array[4] =  0
array[5] =  0
array[6] =  0
array[7] =  0
array[8] =  0
array[9] =  0
array[10] =  0
array[11] =  0
array[12] =  0
array[13] =  0
array[14] =  0
array[15] =  0
array[16] =  0
array[17] =  0
array[18] =  0
array[19] =  0


제가 올린 소스로 컴파일해서 확인해 보시면 빠르실 것입니다. ^^



>안녕하십니까.
>
>EZ-X5 보드를 사용하고 있습니다.
>
>배열을 선언 했습니다.
>char array[20];
>
>메모리 초기화 후에
>memset( array, 0x00, 20 );
>
>array[0] = 0x01;
>을 할당하고
>
>*((short*)&array[1]) = 162;
>를 할당 했습니다.
>
>보통 리눅스의 핵사 값을 찍어보면
>
>[01] [a2] [00] [00] [00] [00] [00] .........
>이렇게 할당이 됩니다.
>
>보드에서 실행을 시켜 보면
>
>[00] [a2] [00] [00] [00] [00] [00] .........
>첫번째 메모리 까지 침범 합니다.
>
>그래서 [a2]가 이진수로 10100010 이니
>혹시 맨앞 비트에 문제가 있는거 아닌가 싶어서
>
>
>array[0] = 0x01;
>*((short*)&array[1]) = 0x02;
>를 할당했는데 결과는 마찬가지 입니다.
>
>왜 앞의 메모리 까지 침범하는지.. 답변 부탁드립니다.^^
>
>
>
>
>