在std :: unique_ptr中包装指针的解决方案?

时间:2017-06-21 14:45:17

标签: c++ c c++11

我需要将int**传递给用C语言编写的API函数调用。根据API的描述,它使用malloc来分配内存,它需要用户释放内存在它返回后。

如何制作std::unique_ptr<int*>?如果我有一个,.get()函数会返回int**。我在想是否可以将指针包裹在unique_ptr中,并确保在超出范围时将其释放。我不确定以下实现是否确保在分配后释放内存?有没有更好的方法来实现这一目标?

int ** get_double_ptr()
{
    int ** ids;
    return ids;
}

int main(int argc, char **argv)
{

    std::unique_ptr<int*> i_ptr(get_double_ptr());

    int ** idx = i_ptr.get();
    // allocate ids using malloc ....

}

C函数声明如下:

int MeshToNodal(int *ne, int *nn, int *eptr, int *eind, int *numflag,
int **xadj, int **adjncy)

0 个答案:

没有答案