gpt4 book ai didi

c - free 函数又出问题了!!!(C linux)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:53 26 4
gpt4 key购买 nike

我在 C linux 中遇到 free() 函数的问题。这是我的示例代码:

typedef struct
{
char index[2];
char color[2];
char duration[2];
} ps;

ps *_ps = NULL;

我需要使用以下函数重复分配和释放上述结构:

ps * readMatrix(mmc_item_item_screen *_item_screen,int rows,int skip)
{
if(_ps)
{
free(_ps);
_ps=(ps *)NULL;
}

_ps=(ps *)calloc(rows-1,sizeof(ps));


memset(_ps,'\0',((rows-1)*sizeof(ps)));
int i=0;
for(i=0;i<rows;i++)
{
if((i+1)>=skip)
{
sprintf(_ps[i].index,"%d",i);
sprintf(_ps[i].color,"%s",getCDKMatrixCell(_item_screen->matrix,i+2,1));
sprintf(_ps[i].duration,"%s",getCDKMatrixCell(_item_screen->matrix,i+2,2));

}
else
{
sprintf(_ps[i].index,"%d",i);
sprintf(_ps[i].color,"%s",getCDKMatrixCell(_item_screen->matrix,i+1,1));
sprintf(_ps[i].duration,"%s",getCDKMatrixCell(_item_screen->matrix,i+1,2));

}

}

return _ps;
}

main()
{
while(1)
....
_ps=readMatrix(_item_screen,rows,getCDKMatrixRow(_item_screen->matrix));
....
}

我第一次调用上述函数时,_ps 为 NULL,因此未调用 free()。但是第二次(_ps 已经分配),一旦调用 free() 程序就会崩溃。

你能帮我解决这个问题吗?

(ps和_ps都是全局的)

谢谢。Edit1 我把操作 _ps 的整个函数都放在了。这是唯一在 _ps 上工作的函数。你能帮忙吗?

最佳答案

您没有发布足够的代码,但是 IMO,您说过 ps 和 _ps 是全局的,所以一旦您释放 _ps,它可能会在您的程序的其他地方使用,从而导致它崩溃。我建议您检查一下程序,看看在哪里使用了 _ps,或者向我们提供更多代码。

希望这对您有所帮助。

关于c - free 函数又出问题了!!!(C linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925277/

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