그대로 테스트 해보았습니다.

#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] =  0
array[1] = a2
array[2] =  0
array[3] =  0
array[4] =  0
생략......


그리고 혹시 몰라서




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

int main()
{
   char  array[20];
   int   ndx;
  
   memset( array, 0, 20);
  
   array[0] = 0x01;
   *( (short *)&array[1]) = 0x0403;
   *( (short *)&array[1]) = 0x0605;

  
   for ( ndx = 0; ndx < 20; ndx++)
   {
      printf( "[%02x]n", array[ndx]);
   }
}

[00]
[03]
[00]
[05]
[00]
/////생략
어디가 문제인것 같나요???


된다면 전화좀 주시겠습니까

02-2140-3631 번 입니다.











>안녕하세요.
>
>말씀을 보고 바로 프로그램을 작성해서 확인해 보았습니다.
>그러나 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;
>>를 할당했는데 결과는 마찬가지 입니다.
>>
>>왜 앞의 메모리 까지 침범하는지.. 답변 부탁드립니다.^^
>>
>>
>>
>>
>>
>