我需要将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)