这是导致错误的函数
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;
}
我不知道为什么会出现这个指针错误。我花了几个小时才想出来,却一无所获。
答案 0 :(得分:0)
您必须为strlen
内的所有malloc
添加+1,否则您不会为字符串终结符分配空间(strlen
返回“逻辑长度”字符串,不包括尾随的NUL,因此您分配的内存少于所需的内存,这会给您带来错误)。
顺便说一句,您可以(*result).
而不是result->