我想知道如何应对以下问题。在我的 C++ 类中,我有一个辅助 PyObject 指针。
class Foo
{
public:
// Should I new the dictionary here in constructor?
Foo()
{
}
// Must decrease the reference count or explicitly delete the dictionary?
~Foo()
{
Py_DECREF(myDictionary);
}
void sync()
{
myDictionary = PyDict_New();
for (int i=0; i<myInternalData.size(); i++)
{
PyObject *key = PyInt_FromLong(i);
PyObject *val = PyInt_FromLong(myInternalData.at(i));
PyDict_SetItem(dict,key,val);
Py_DecRef(key);
Py_DecRef(val);
}
}
private:
PyObject *myDictionary;
std::vector<int> myInternalData;
}
在我的 C++ 代码中,myInternalData
结构偶尔会更新或调整大小,我想知道如何处理我的 python 字典的正确内存分配。
我不知道如何释放与其关联的内存,或者如何正确地保持它与我的内部同步,std::vector
而不会破坏堆或引发内存泄漏。
对 Python C API 有帮助吗?我应该释放 PyDictPyObject_Del
然后再重新分配它吗?有人建议另一种方法?