当我运行应用程序时,它会在遇到destroy函数时出现错误,我不知道为什么。任何想法都可能是伟大的,也许它来自分配功能,但一切正常,直到我做了销毁功能。
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);
}
答案 0 :(得分:4)
您忘记在销毁函数中取消引用strings
指针:
void destroy(char ***strings, int size)
{
int j;
for(j=0;j<size;j++)
{
free( (*strings)[j] );
}
free(*strings);
}