Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:“;无效的free():地址0x7feffee08位于线程1';“s堆栈”;_C_Segmentation Fault_Malloc_Free - Fatal编程技术网

C:“;无效的free():地址0x7feffee08位于线程1';“s堆栈”;

C:“;无效的free():地址0x7feffee08位于线程1';“s堆栈”;,c,segmentation-fault,malloc,free,C,Segmentation Fault,Malloc,Free,这不是我的确切代码,但本质上是这样的。我试图在main()中创建一个堆栈变量 整数**x 我想传递给函数foo(int**x,arg1,arg2,…)。在某些情况下,我应该在foo()中为x动态分配空间 x=(int**)malloc(sizeof(int*)*num_elems) 我也不是为每个int*元素分配新的空间,而是分配给它&y,其中int y是在foo()中创建的 我在尝试释放main()中的x时遇到此错误。我不明白这是什么意思,但我怀疑可能是因为我用了&y 编辑:同样相关:我在尝试

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

整数**x

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

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

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

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


编辑:同样相关:我在尝试访问x的双解引用元素时得到了垃圾值。

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

主要功能

int *x ;
foo(&x);
在foo中(整数**x,…)

想想这个,

void foo()
{
    int y;
    int *x = NULL;
    x = &y;
}
在这种情况下,
y
存储在堆栈中。当
foo
返回时,
y
将不可用(取决于实现)。如果您确实需要这样做,请改为使用malloc。如果这样做,
y
将存储在堆上

void foo()
{
    int y;
    int *x = NULL;
    x = &y;
}