gpt4 book ai didi

c - *** 检测到 glibc *** realloc() : invalid old size 3

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:31 25 4
gpt4 key购买 nike

此代码有时会出现段错误,这是为什么?

void concatenarAlBuffer(char **destino, char caracter)
{
char matrizAux[1];
matrizAux[0]=caracter;
matrizAux[1]='\0';

(*destino) = realloc((*destino),2+(strlen((*destino))*sizeof(char)));

if ((*destino)==NULL)
{
perror("Error al reservar memoria\n");
exit(-1);
}

strcat((*destino),matrizAux);
}

最佳答案

matrizAux 只能容纳一个字符。您无法访问 matrizAux[1] - 它越界了。

像这样声明matrizAux:

char matrizAux[2];

请记住,一个 n 元素数组可以在位置 0 到(包括)n-1 之间建立索引。

此外,您不需要 sizeof(char),因为它始终为 1。在这种情况下,*destino 周围的括号是无用的,并且会使代码更难不必要地阅读。以下是我将如何更改您的代码:

void concatenarAlBuffer(char **destino, char caracter) {
char matrizAux[2];
matrizAux[0]=caracter;
matrizAux[1]='\0';

*destino = realloc(*destino,2+strlen(*destino));

if (*destino == NULL) {
perror("Error al reservar memoria\n");
exit(-1);
}

strcat(*destino, matrizAux);
}

关于c - *** 检测到 glibc *** realloc() : invalid old size 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742978/

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