0

这是我的功能导致错误

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;
}

我不知道为什么我得到这个指针错误。我花了几个小时来弄清楚,但什么也没得到。

4

1 回答 1

0

您必须在所有strlen内部添加 +1 malloc,否则您不会为字符串终止符分配空间(strlen返回字符串的“逻辑长度”,不包括尾随 NUL,因此您分配的内存比需要的少,这给出了你那个错误)。

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

于 2013-10-25T08:27:54.037 回答