gpt4 book ai didi

c - 不知道为什么我收到 Glibc 检测到错误

转载 作者:行者123 更新时间:2023-11-30 17:45:34 24 4
gpt4 key购买 nike

这是我的函数,导致错误

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

我不知道为什么会出现这个指针错误。我花了几个小时来弄清楚,但一无所获。

最佳答案

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

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

关于c - 不知道为什么我收到 Glibc 检测到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19584735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com