gpt4 book ai didi

c - 如何释放指向保存地址的指针的指针

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

我正在尝试释放 fe。使用 Valgrind 时,我收到 fe 的“invalid free()”错误。如果我试图释放指向保存地址而不是 double 指针的指针,有什么不同吗?

int main()
{
double **fe = 0; int i,j;
fe = malloc(10 * sizeof(double *));
for (i = 0; i < 10; i++)
{
fe[i] = malloc(10 * sizeof(double));
}
double *X; X = malloc(2 * sizeof(double));
X[0] = 0; X[1] = 2;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
fe[i][j] = X[1];
}
}

free(X);

for (j = 0; j < 10; j++)
{
free(fe[j]);
}

free(fe);

return 0;
}

最佳答案

看到double *X;,我觉得问题就出在这里

X = malloc(2 * sizeof(double *));

你应该使用

X = malloc(2 * sizeof(double));

或者,为了更好,

X = malloc(2 * sizeof(*X));

但是,如前面的评论所述,此处显示的代码还存在其他问题 [缺少 ij 的定义]。

关于c - 如何释放指向保存地址的指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632770/

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