카테고리 없음

[C언어] 메모리 관리 함수 - memmove()

s뽈록이s 2013. 6. 19. 15:05
void main(void)
{
	char str[32] = "You are beautiful";
	char str2[] = "very ";

	memmove(str + 13, str + 8, 10);
	puts(str);
	memcpy(str + 8, str2, strlen(str2));
	puts(str);
}

프로그램 실행화면


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


메모리에 저장된 내용을 지정한 번지 수 만큼 뒤로 옮기는 함수이다. 유용하게 쓰일 수도 있겠지만 런타일 애러를 발생시키는 큰 원인을 제공하지 않을까 싶다.


memmove()함수를 통해 'beautiful'을 5칸 뒤로 옮기었다. 이를 바로 출력하였을 때 기존에 있던 자리에 값이 지워지는 것이 아니라 그대로 남아 있음을 알 수 있다. 이제 새로 생긴 부분에 memcpy()함수를 통해 'very '를 집어 넣어 주고 출력을 했다.


goto 문과 비슷하게 자주 쓰는 버릇이 들어버리면 프로그램 전체가 꼬여버릴 수 있을 듯 하니 goto문과 똑같이 규칙을 정해놓고 사용하는 것이 좋을 것 같다.


메모리 관리가 전부 그렇듯  memmove() 함수도 void형으로 인자를 전달하므로 모든 변수형들을 처리할 수 있다.