gpt4 book ai didi

c - 调用 free 方法时出现段错误(核心转储)错误

转载 作者:行者123 更新时间:2023-11-30 18:26:16 24 4
gpt4 key购买 nike

我正在尝试释放字符数组的内存空间:

        static void cleanArray(char* array)
{
int i;
int size = strlen(array) + 1;
for(i = 0; i < size; i++)
free(array[i]);
free(array);
}

int main(){
char* array = (char *)malloc(1 * sizeof(char*));
int c;
for(c=0;c<100;c++){ //code to populate some string values in the array.
void *p = realloc(array, (strlen(array)+strlen(message)+1)*sizeof(char*));
array = p;
strcat(array, "some string");
}

cleanArray(array); //I get error only when I call this method.
}

但是对于上面的代码,我收到Segmentation failure错误。

当我尝试使用以下代码而不是 cleanArray() 时,我认为数组没有被释放:

    free(array);
printf("%s",array); //it prints all the values in the array. Hence, I concluded it is not freedup.

最佳答案

循环中的

free(array[i]);有问题。 array[i] 是一个 char 值(实际上是整数提升后的 int),将该值传递给 free 将被视为指针。现在您正试图释放您不知道的地址。

关于c - 调用 free 方法时出现段错误(核心转储)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533756/

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