【问题标题】:Don't know why I get Glibc detected error不知道为什么我得到 Glibc 检测到的错误
【发布时间】:2013-10-25 08:22:49
【问题描述】:

这是我的函数导致错误

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

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

【问题讨论】:

标签: c pointers glibc


【解决方案1】:

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

顺便说一句,你可以用result->代替(*result).

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多