나는 actully 이동에 아무것도 없을 때 내가 함께 복사 / 치료의 경우에 필요합니까 memmove()
/memcpy()
에지의 경우와 같은
int numberOfBytes = ...
if( numberOfBytes != 0 ) {
memmove( dest, source, numberOfBytes );
}
또는 확인하지 않고 함수를 호출해야
int numberOfBytes = ...
memmove( dest, source, numberOfBytes );
이전 스 니펫의 확인이 필요합니까?
6
질문은 free와 같은 함수에 대한 null 포인터를 약간 확인하는 것을 상기시킵니다. 필요하지는 않지만 거기에 대한 생각을 보여주기 위해 댓글을 달겠습니다.
—
두꺼비
@Toad : 코드를 복잡하게 만드는 것 외에 어떤 용도로 사용됩니까? 누군가의 코드를 읽을 때 원래 프로그래머가 "실제로 필요하지 않은이 작업을 수행하려고 생각했지만 불필요하기 때문에 그렇게하지 않았다"는 것을 알 필요가 없습니다. 포인터가 해제 되는 것을 본다면 그것이 null이 될 수 있다는 것을 알고 있습니다. 그래서 "should I check for null"이라는 주제에 대한 원래 프로그래머의 생각을 알 필요가 없습니다. 0 바이트를 복사하는 경우도 마찬가지입니다.
—
jalf
memcpy
@jalf : stackoverflow에 대한 질문이라는 사실은 사람들이 의심하게 만듭니다. 코멘트를 추가하는 것은 당신을 도울 수 있지만,되지 않을 수도 적은 지식이 힘 도움말 사람
—
두꺼비
@Toad 네, 왜 필요한지 확인하는 것이 원칙적으로 가치가없는 이유를 명시 적으로 설명하는 주석입니다. 동전 의 다른 측면은이 특정 예제가 각 프로그래머가 한 번만 답을 배우면되는 표준 라이브러리 기능을 포함하는 일반적인 경우라는 것입니다. 그런 다음 읽은 모든 프로그램에서 이러한 검사가 필요하지 않음을 인식 할 수 있습니다. 들어 그 이유는, 내가 코멘트를 생략 할 것입니다. 이와 같은 여러 호출이있는 코드베이스는 주석을 각각에 복사하여 붙여 넣거나 일부 호출에만 임의로 사용해야합니다. 둘 다 추악합니다.
—
Mark Amery