cpp memmove() 사용에 궁금한 점이 있습니다.

조회수 533회

안녕하세요

현재 사정상 JNI 나 JNA를 쓸 수 없어

cpp 코드를 java로 옮겨적고 있는데요

코드가

typedef unsigned char BYTE;

char *Data1; BYTE *Data2; for(... memmove(&Data1[i * 2], &Data2[j], 160);

이렇게 구성되어 있다 한다면, Data1에 Data2의 데이터를 해당 길이만큼 준다는 걸로 보이는데 여기서 &와 [] 안의 인덱스의 의미를 잘 모르겠습니다. Data1[i*2]를 시작점으로 해서 Data2[j]부터의 값을 length = 160만큼 복사한다는 건가요..? 잘 모르겠네요..

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 이런건 레퍼런스(#1, #2, #3)를 보시면 쉽게 찾을 수 있습니다.

    void* memmove(void* dest, const void* src, size_t count);
    

    이렇게 생겼고 동작은 src의 count 바이트를 dest에 복사하는 것입니다.
    그러니까 질문하신 예에서는 &Data2[j]부터 160바이트를 &Data1[i * 2]에 복사해나가는 것이죠.
    포팅시 유의하셔야 할 점은 복사 과정에서 dest와 src가 겹쳐도 제대로 동작해야 한다는 점입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)