У меня есть написать/прочитать проблемы с 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 предупреждают ошибку в записи в зЬгсру и после этого предупредить прочитать ошибку в stringModifier, происходящий на том же адресе памяти.
Где SourceString приходит? – Jiminion
sourceString находится в области stringModifier и принимает информацию для параметра tempString qsortString. Но я думаю, что действительно проблема была в strcpy. – GSchimiti
Вы выделили место для tempstring (alloc или malloc)? – Jiminion