gpt4 book ai didi

C: "Invalid free(): Address 0x7feffee08 is on thread 1' s 堆栈”

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

这不是我的确切代码,但本质上是这样的。我正在尝试在 main() 中创建一个堆栈变量

int **x;

我想传递给函数 foo(int **x, arg1, arg2, ...)。在某些情况下,我应该在 foo() 中为 x 动态分配空间

x = (int **) malloc(sizeof(int *) * num_elems);

我也没有为每个 int * 元素分配新空间,而是分配给它 &y,其中 int y 是在 foo() 中创建的。

当我尝试在 main() 中释放 x 时,出现此错误。我不明白这是什么意思,但我怀疑这可能是因为我使用了 &y?

编辑:同样相关:当我尝试访问 x 的双重取消引用元素时,我得到了垃圾值。

最佳答案

您没有在 main 函数中正确声明,也没有在 foo() 函数中正确定义。您必须声明为

在主函数中

int *x ;
foo(&x);

在 foo(int **x,....)

*x =  malloc(sizeof(int) * num_elems);

关于C: "Invalid free(): Address 0x7feffee08 is on thread 1' s 堆栈”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075060/

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