我想知道动态分配boost :: python :: object类型的对象是否正确。
boost::python::object * obj = new boost::python::object();
会有任何问题吗?内部引用计数怎么样?
谢谢!
答案 0 :(得分:2)
boost :: python :: object的docs显式声明析构函数递减引用计数,赋值运算符递增它。虽然没有明确说明,但从那些显式语句和关于consturctor Constructs an object managing a reference
的声明中我们可以推断出构造函数也会增加引用计数。
由于new调用构造函数,只要在指针上调用delete以确保调用析构函数,内部引用计数就不会有任何问题。
另请注意,有关使用std :: shared_ptr或std :: unique_ptr进行引用计数的注释有些误导。 std :: unique_ptr不引用计数,而是移动/移动分配导致所有权从实例A传递到实例B,实例A变为无效。另外,std :: shared_ptr不会修改boost :: python :: object维护的内部引用计数,而是会管理一个关于boost :: python :: object指针生命周期的单独引用计数。