boost.python公开返回向量的函数

2024-04-16

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

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

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

Thanks.


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

Boost Python 和智能指针可以很好地协同工作,这可以在this http://wiki.python.org/moin/boost.python/PointersAndSmartPointers例子。

揭露vectors or lists 使用索引接口,可以查看here. http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/indexing.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boost.python公开返回向量的函数 的相关文章