목록memmove (1)
FEEL
memmove, memcpy에서 왜 dst, src 둘다 null일때 segmentation fault가 발생하지 않을 까?
memmove, memcpy함수에 대해 찾아보면 dst, src가 null인 상황일 때 같은 것을 고려하고 만들어진 함수들은 아니다. 따라서 null일 때는 segmetation fault가 발생한다. 근데 왜? 둘다 null일 때는 에러가 발생하지 않는데 그 이유에 대해 궁금해졌다. 그래서 이 함수가 어떻게 구현되어 있는지 찾아보았다. dst == src || len == 0인 상황에서는 바로 dst를 반환해버린다. 즉 dst와 src가 서로 같을 때는 굳이 복사하는 과정을 수행할 필요가 없기 때문에 dst를 반환해버린다. 내가 생각하기에는 여기서 예기치 못한 동작이 발생한 것이다. 둘다 0(NULL)일 때 이부분이 실행되기 때문에 오류 없이 함수가 정상적으로 종료 되어 버린다.
공부/C 언어
2023. 6. 17. 22:57