삽입 정렬을 사용하여 문자열을 정렬하기위한 프로그램입니다. 에러 리포트 :입력에 따라 Valgrind 오류가 다릅니다. 어떻게 해결할 수 있을까요?
== == 13,660의 strcpy 의 소스 및 목적지 오버랩 (0x7FF00066E, 0x7FF00066E) == 0x4A06E47에서 13,660 ==의 strcpy (mc_replace_strmem.c : 106)
을 이 원인이되는 행은 다음과 같습니다.
이는 min_index와 index_1이 동일 해지기 때문에 발생합니다. 이것은 입력 된 입력에 따라 다릅니다. 질문은 "입력에 의존하는 오류를 어떻게 해결할 것인가?"입니다. 내가 문제를 지나치게 단순화하고 있지 않다 희망
대신 'memmove'를 사용하십시오. –
문자열이 겹치는 오류입니까? 그런 다음 색인 계산에서 오류를 찾으십시오. 귀하의 경우 항목이 이미 제 위치에 있으므로 아무 것도 복사 할 필요가 없습니다. 'strcpy'를'if'에 랩핑하십시오. –
@DanielKamilKozar 좋습니다. 방금 새로운 기능을 배웠습니다! 감사. 따라서 코드는'memmove ((char *) arg_array [min_index], (char *) arg_array [index_1], SIZE)'이어야만합니다. – 0aslam0