Arduino memcpy 및 memmove

Ammar Ali 2023년10월12일
  1. Arduino에서memcpy()함수를 사용하여 메모리 블록 복사
  2. Arduino에서memmove()함수를 사용하여 메모리 블록 복사
Arduino memcpy 및 memmove

이 튜토리얼에서는memcpy()memmove()함수를 사용하여 한 변수에서 다른 변수로 메모리 블록을 복사하는 방법에 대해 설명합니다.

Arduino에서memcpy()함수를 사용하여 메모리 블록 복사

한 변수의 내용을 다른 변수에 복사하려면memcpy()함수를 사용하여 쉽게 수행 할 수 있습니다. 이 함수는 세 개의 입력 인수를 사용합니다. 첫 번째 인수는 데이터를 붙여 넣을 변수입니다. 두 번째 매개 변수는 데이터를 복사하려는 변수입니다. 세 번째 매개 변수는 두 번째 변수에서 복사해야하는 bytes의 수입니다. 예를 들어, 한 배열에서 다른 배열로 데이터를 복사하려고한다고 생각해보십시오. 아래 예제 코드를 참조하십시오.

int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memcpy(firstArray, secondArray, sizeof(secondArray)); }

위의 코드에서secondArray변수에있는 모든 데이터를firstArray변수에 복사했습니다. 세 번째 인수에서 복사하려는 바이트 수를 변경할 수 있습니다. 이 함수는 오버플로를 확인하지 않으며 두 변수의 주소가 겹치는 경우 필요한 출력을받지 못합니다. 따라서이 함수를 사용하는 대신memmove()함수를 사용할 수 있습니다.

Arduino에서memmove()함수를 사용하여 메모리 블록 복사

memcpy()함수는 오버플로가 있거나 동일한 메모리 주소의 경우 문제를 일으켰습니다. memcpy()함수 대신memmove()함수를 사용하여 위의 문제를 해결할 수 있습니다. memmove()함수는memcpy()함수와 동일한 작업을 수행하지만 오버플로를 무시합니다. 그래서 많은 문제를 해결할 것입니다. memmove()함수를 사용하여 위와 동일한 예제를 해결하는 것을 고려하십시오.

int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memmove(firstArray, secondArray, sizeof(secondArray)); }

위의 두 예제에서 결과는 동일하지만memmove()함수를 사용하여 오류 가능성을 제거 할 수 있습니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook