maple19out   4년 전

본래 문제를 풀면서 출력배열의 크기를 (입력배열의크기X반복횟수) 만큼 유연하게 할당하고 싶어서

result[i] = (char*)malloc(sizeof(char)*strlen(arr[i])*r[i]) 와 같은 식으로 할당하였습니다. 그러나 이와 같이 코드를 작성하자 마지막 주석이 위치한

free(result[i]) 부분에서 지속적으로 오류가 발생하였습니다. 원인을 찾지 못하여 그냥 출력배열이 가질 수 있는 최대 크기인 161(NULL문자포함)을 할당해주었습니다.

혹여나 free 과정에서 arr 또는 r 배열에 영향을 끼치는게 아닐까 싶어 free 순서도 조정해보았지만 마찬가지 결과였습니다.

왜 이런 문제가 발생하는지 궁금합니다...ㅠㅠ

seico75   4년 전

strlen은 널문자가 카운트 안되서 그런 것 같습니다.

result[i] = (char*)malloc(sizeof(char)*(strlen(arr[i])+1)*r[i]) 하면 될 것 같네요.

에러이유는 free 하려고 했는데 free에 필요한 정보가 위 이유로 깨져서 난 것 같습니다.

maple19out   4년 전

답변 감사합니다!

댓글을 작성하려면 로그인해야 합니다.