gpt4 book ai didi

c - 试图释放这个二维数组

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

当我运行该应用程序时,它会在执行销毁函数时出现段错误,我不知道为什么。任何想法都很好,也许它来自分配函数,但在我创建销毁函数之前一切正常。

int main(void)
{
char** strings;
allocate(&strings, 48);
//....does stuff with data
destroy(&strings, 48);
}

void allocate(char ***strings, int size)
{
*strings = (char**)malloc(size * sizeof(char*));
if(strings == NULL)
{
printf("Could not allocate memory\n");
}

int i;
for(i=0;i<size;i++)
{
(*strings)[i] = (char*)malloc(MAX_STRING_LEN * sizeof(char));
if(strings == NULL)
{
printf("Could not allocate memory\n");
}
}
}



void destroy(char ***strings, int size)
{
int j;
for(j=0;j<size;j++)
{
free(strings[j]);
}
free(strings);
}

最佳答案

您忘记在 destroy 函数中取消引用 strings 指针:

void destroy(char ***strings, int size)
{
int j;
for(j=0;j<size;j++)
{
free( (*strings)[j] );
}
free(*strings);
}

关于c - 试图释放这个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276025/

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