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()
함수를 사용하여 오류 가능성을 제거 할 수 있습니다.