SUG存储未知对象直到下一个C++函数调用

2024-09-30 18:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python使用Sigg调用C++中的函数MyActuple()。每次调用myfunc()时,我都要生成同样大的稀疏矩阵。相反,我想做的是创建一次矩阵,然后将矩阵的指针传递给python,而不是每次重新分配空间。我担心的是这会导致某种内存泄漏。你知道吗

最好的方法是什么?你知道吗

矩阵是Eigen::SparseMatrix的一部分。你知道吗

简单地来回传递一个指针是否省钱?Python不知道如何处理它,但是只要空间保持分配,我能在C++中重用指针吗?你知道吗


Tags: 方法函数内存空间矩阵myfunc指针eigen
1条回答
网友
1楼 · 发布于 2024-09-30 18:27:35

这正是swig处理未知对象的方式:它传递指向对象的指针以及一些类型信息(字符串)。如果函数以该类型的指针作为参数,swig会很高兴地将该指针传递给它。参见swig文档here。你知道吗

您只需确保类型匹配,即不能将say a MatrixXd*传递给python,并在采用MatrixBase<MatrixXd>*的函数中使用它,因为swig不知道这些类型是兼容的。你知道吗

此外,对于未知对象(至少指向这样的指针),SWIG将不执行任何内存管理,因此需要在C++侧分配和释放对象。你知道吗

相关问题 更多 >