memcpy ( desc, src, num ) 함수 사용시 발생하는 문제점.
글쓴이: yann8166 / 작성시간: 화, 2015/03/24 - 5:06오후
##memcpy ( desc, src, num ) 함수 사용시 발생하는 문제점.
memcpy 함수를 사용할때 세번째 인자인 num값이
desc의 크기보다 크면 overflow나 overlapping문제가 일어날 수 있다는건 익히 알고 있습니다.
하지만 num값이 src보다 클 경우에 대해서 발생할 문제에 대해서는 들어본적이 없는데요.
개발중인 소스에서 num값이 src보다 큼으로 인해 프로그램이 Down되는 현상이 발견 되었습니다.
char desc[30000];
char src[300];
memcpy ( desc, src, sizeof(desc) );
위와같이 구현 되어 있는데 memcpy부분에서 죽어 버립니다.
세번째 인자의 값을 src 크기만큼 줄이면 죽지 않더군요..
혹시나해서 memmove함수를 사용해 보았는데도 똑같이 죽습니다.
desc 배열이 overflow나 overlapping되는것이 아닌데
왜 죽을까요?
Forums:
마찬가지로 overflow 문제로 런타임 에러가 뜨게
마찬가지로 overflow 문제로 런타임 에러가 뜨게 됩니다.
누가 overflow되는 건가요?
실제 desc의 size는 초과 되지 않았는데..
그럼 src가 overflow된다는 건가요?
접근시의 overflow 같은 다른 종류의 overflow가 있는 건가요??
src가 overflow 됩니다.런타임 에러는 값을
src가 overflow 됩니다.
런타임 에러는 값을 입력할때만 발생하는것이 아니라
허가되지 않은 주소의 값을 읽을때도 발생합니다.
그렇군요!
접근시에도 overflow가 된다는 사실을 왜 여태 몰랐을까요..
감사합니다.
댓글 달기