프로그래밍/C,C++
memmove_s 함수
MAKGA
2021. 12. 27. 09:15
320x100
MSDN: https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/memmove-s-wmemmove-s?view=msvc-170
원형은 다음과 같다.
errno_t memmove_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemmove_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
변수명은 number of Elements 라고 되어있지만 갯수(_countof())가 아닌 사이즈(sizeof())를 넘겨야 된다.
예제는 seq 번째 데이터들을 앞으로 1칸씩 당겨오는 코드다.
int main()
{
int arr[4] = { 1,2,3,4 };
for (int i = 0; i < _countof(arr); ++i)
std::cout << arr[i] << ", " << std::endl;
int seq = 1;
::memmove_s(
arr + seq,
(_countof(arr) - seq) * sizeof(arr[0]),
arr + seq + 1,
(_countof(arr) - seq - 1) * sizeof(arr[0]));
for (int i = 0; i < _countof(arr); ++i)
std::cout << arr[i] << ", " << std::endl;
return 0;
}
다만 이름이 move라 메모리가 그대로 이동할 것 같지만 사실은 copy가 되고 있기 때문에 이전 sour부분에는 기존 데이터가 그대로 남는다.
320x100