나는 을 가지고 있습니다.에 valgrind의 문제가 있고 그 이유를 모르겠습니다. 오류는 동일한 코드 블록에서 항상 발생하며 메모리 주소 만 변경됩니다. 코드 블록은 다음과 같습니다Valgrind 경고 쓰기 및 읽기 오류
void stringModifier(char *string) {
char *sourceString = string;
char *destinyString = sourceString;
while(*string != '\0') {
*string = tolower(*string);
if(*string != ' ') { *destinyString++ = *string; }
string++;
}
*destinyString = '\0';
}
int qsortComparison(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
void qsortString(char *string, char *tempString) {
strcpy(tempString, string);
stringModifier(tempString);
qsort(tempString, strlen(tempString), sizeof(char), qsortComparison);
}
void outputReader(char *string1, char *string2) {
char *tempString1 = (char *) malloc (strlen(string1) * sizeof(char));
char *tempString2 = (char *) malloc (strlen(string2) * sizeof(char));
qsortString(string1, tempString1);
qsortString(string2, tempString2);
if(!strcmp(tempString1, tempString2)) { printf("V\n", string1, string2); }
else { printf("F\n"); }
}
내가 outputReader를 사용하고 qsortString, Valgrind의 전화 할 때마다이 strcpy를에서 쓰기 오류를 경고하고 그 후 가 stringModifier에서 읽기 오류 경고, 동일한 메모리 주소에서 발생합니다.
출처는 어디에서 왔습니까? – Jiminion
sourceString은 stringModifier 범위에 있으며 qsortString의 tempString 매개 변수에 대한 정보를 가져옵니다. 하지만 정말 문제가 strcpy에 있다고 생각합니다. – GSchimiti
tempstring (alloc 또는 malloc)을위한 공간을 할당 했습니까? – Jiminion