这不是我的确切代码,但实质上就是这样 . 我正在尝试在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的双重引用元素时,我得到了垃圾值 .
2 回答
您没有在main函数中正确声明,也没有在foo()函数中正确定义 . 你必须声明为
在主要功能
在foo(int ** x,....)
想想这个,
在这种情况下,
y
存储在堆栈中 . 当foo
返回时,y
将不可用(取决于实现) . 如果你绝对需要这样做,请改为malloc
y
. 如果这样做,y
将存储在堆上 .