Не знаю, почему я получаю ошибку, обнаруженную Glibc
Это моя функция, которая вызывает ошибку
void copy_bounds_concrete(char* lower, char* upper, struct bounds* results){
if (DEBUG)
printf("%d %d \n", strlen(lower), strlen(upper));
(*results).lowerBound =(char*) malloc(strlen(lower));
strcpy((*results).lowerBound, lower);
(*results).upperBound =(char*) malloc(strlen(upper));
strcpy((*results).upperBound, upper);
}
и это границы структуры:
struct bounds
{
char* name;
char* lowerBound;
char* upperBound;
}
Я не знаю, почему я получил эту ошибку указателя. Я потратил пару часов, чтобы понять, но ничего не получил.
1 ответ
Решение
Вы должны добавить +1 ко всем strlen
внутри malloc
в противном случае вы не выделяете место для конца строки (strlen
возвращает "логическую длину" строки, не включая завершающий NUL, поэтому вы выделяете меньше памяти, чем необходимо, что приводит к этой ошибке).
Кстати, вместо (*result).
ты можешь сделать result->