카테고리 없음
[C++] 메모리 관리 함수 - memmove()
s뽈록이s
2014. 1. 28. 11:22
void main(void) { char str[32] = "You are beautiful"; char str2[] = "very "; memmove(str + 13, str + 8, 10); cout << str << endl; memcpy(str + 8, str2, strlen(str2)); cout << str << endl; }
실행화면
void *memmove(void *dest,const void *src,size_t count);
메모리에 저장된 내용을 지정한 번지 수 만큼 뒤로 옮기는 함수이다. 유용하게 쓰일 수도 있겠지만 런타일 애러를 발생시키는 큰 원인을 제공하지 않을까 싶다.
memmove()함수를 통해 'beautiful'을 5칸 뒤로 옮기었다. 이를 바로 출력하였을 때 기존에 있던 자리에 값이 지워지는 것이 아니라 그대로 남아 있음을 알 수 있다. 이제 새로 생긴 부분에 memcpy()함수를 통해 'very '를 집어 넣어 주고 출력을 했다.
goto 문과 비슷하게 자주 쓰는 버릇이 들어버리면 프로그램 전체가 꼬여버릴 수 있을 듯 하니 goto문과 똑같이 규칙을 정해놓고 사용하는 것이 좋을 것 같다.
메모리 관리가 전부 그렇듯 memmove() 함수도 void형으로 인자를 전달하므로 모든 변수형들을 처리할 수 있다.