不知道为什么我发现Glibc检测到错误

时间:2013-10-25 08:22:49

标签: c pointers 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 个答案:

答案 0 :(得分:0)

您必须为strlen内的所有malloc添加+1,否则您不会为字符串终结符分配空间(strlen返回“逻辑长度”字符串,不包括尾随的NUL,因此您分配的内存少于所需的内存,这会给您带来错误)。

顺便说一句,您可以(*result).而不是result->