c++ - boost.python 公开返回 vector<MyClass> 的函数

标签 c++ python boost vector shared-ptr

我正在用 C++ 为 Python 编写一个扩展模块,我正在使用 boost.python。我想公开一个返回 vector<MyClass> 的函数.我不确定如何执行此操作以及它将如何与 Python WRT 内存管理交互。

我的第一个想法是包装 MyClassshared_ptr , 因此该函数将返回 vector<shared_ptr<MyClass>> .这会有帮助吗? shared_ptr<MyClass> 时会发生什么实例进入 Python 领域?他们会被释放吗?

所以我的问题是:如何公开一个返回 vector 的函数的 MyClass实例到 Python 而不会泄漏内存?

谢谢。

最佳答案

如果您使用 vector<MyClass> vector 中的那些实例显然(有点,因为 vector 在内部使用动态分配的内存)堆栈分配。它与 vector<MyClass*> 不同这本质上是一个动态分配的 vector MyClass实例。在这种情况下,一个 vector<shared_ptr<MyClass> >是更好的解决方案。

Boost Python 和智能指针可以很好地协同工作,可以在this 中看到。示例。

暴露vector s 或 list s使用索引接口(interface),可以查看here.

关于c++ - boost.python 公开返回 vector<MyClass> 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268496/

相关文章:

c++ - 如何在没有 print(f) 等标准 C 函数的情况下将 char 转换为八进制格式

c++ - 如何使用 qmake 为单个源文件指定编译器标志?

python - NER(命名实体识别)文档中句子之间的相似度

c++ - 如何通过在它之前编写的预处理器定义来获取函数签名?

c++ - 我不能在我自己的头文件中包含 boost 头文件

c++ - 隐藏应用程序启动时删除旋转球

c++ - 关于在 C++ 中访问字符串的字母

Python:如何在一行中检查字符串中出现的字符

python - panda read_csv() 将虚数转换为实数

c++ - boost 几何中点的最小定向边界矩形