引用计数永远不会减少到零Py_DECREF

时间:2015-05-28 08:40:09

标签: python c++

当我运行以下代码时,while循环永远不会停止。为什么呢?

当参考编号为零时,PyObject指针是否会变为Null?

#include <sched.h>
#include <Python.h>
int main() {
    Py_Initialize(); 
    PyObject *pModule;
    int time=0;
    pModule = PyImport_ImportModule("entry"); 
    while(pModule!=NULL)
    {
        Py_DECREF(pModule);
        time++;
        printf("this is  decref pmodule, times= %d",time);
    }
    Py_Finalize();  
    return 0;
}

1 个答案:

答案 0 :(得分:2)

当引用计数达到零时,指向的对象被销毁,内存被释放。

这不会以任何方式影响您的指针,但是您将留下指向已释放内存的无效指针。

这与“普通”C ++完全相同; delete p不会影响p的值,只会影响*p的值和指针的有效性。