通过引用传递Const 2d Matrix

时间:2015-08-14 22:25:30

标签: c pass-by-reference

我有以下功能(只释放分配的内存或2d矩阵)

void mat_free(Float_t  ***mat)
{
    free((*mat)[row_start]);
    free((*mat));
}

注意:矩阵被分配为单个内存块,然后分成行。

然而,在另一个函数中调用了mat_free,我释放了2d矩阵,如下所示

mat_free(&A_in);

其中A_in是声明为

的2d矩阵
Float_t **A_in;

然而尝试释放const 2d矩阵如下

const Float_t **A_in;
mat_free(&A_in);

这不编译并给我“错误C2664:'mat_free':无法将参数1从”const Float_t ***“转换为”Float_t ***“。因此,我尝试将mat_free(&A_in);更改为mat_free((Float***&)A_in);。但是,这有时会起作用,而其他时间会崩溃应用程序。这告诉我这个演员是不正确的。我通过运行多次调用free并检查内存使用情况的函数来确认它(我不认为它正在取消分配内存)

是一种通过引用将变量发送到函数的方法吗? 为什么编译器不会将此转换标识为错误或警告? 谢谢你的帮助:))

0 个答案:

没有答案