Contagem de Referências
***********************

As macros nesta seção são usadas para gerenciar contagens de
referências de objetos Python.

void Py_INCREF(PyObject *o)

   Aumenta a contagem de referências para o objeto *o*. O objeto não
   deve ser "NULL"; se você não tem certeza de que não é "NULL", use
   "Py_XINCREF()".

void Py_XINCREF(PyObject *o)

   Aumenta a contagem de referências para o objeto *o*. O objeto pode
   ser "NULL", caso em que a macro não tem efeito.

void Py_DECREF(PyObject *o)

   Diminui a contagem de referências para o objeto *o*. O objeto não
   deve ser "NULL"; se você não tem certeza de que não é "NULL", use
   "Py_XDECREF()". Se a contagem de referências chegar a zero, a
   função de desalocação do tipo de objeto (que não deve ser "NULL") é
   chamada.

   Aviso:

     A função de desalocação pode fazer com que o código Python
     arbitrário seja invocado (por exemplo, quando uma instância de
     classe com um método "__del__()" é desalocada). Embora as
     exceções em tal código não sejam propagadas, o código executado
     tem acesso livre a todas as variáveis globais do Python. Isso
     significa que qualquer objeto que é alcançável de uma variável
     global deve estar em um estado consistente antes de "Py_DECREF()"
     ser invocado. Por exemplo, o código para excluir um objeto de uma
     lista deve copiar uma referência ao objeto excluído em uma
     variável temporária, atualizar a estrutura de dados da lista e
     então chamar "Py_DECREF()" para a variável temporária.

void Py_XDECREF(PyObject *o)

   Diminui a contagem de referências para o objeto *o*. O objeto pode
   ser "NULL", caso em que a macro não tem efeito; caso contrário, o
   efeito é o mesmo de "Py_DECREF()", e o mesmo aviso se aplica.

void Py_CLEAR(PyObject *o)

   Diminui a contagem de referências para o objeto *o*. O objeto pode
   ser "NULL", caso em que a macro não tem efeito; caso contrário, o
   efeito é o mesmo de "Py_DECREF()", exceto que o argumento também é
   definido como "NULL". O aviso para "Py_DECREF()" não se aplica em
   relação ao objeto passado porque a macro usa cuidadosamente uma
   variável temporária e define o argumento como "NULL" antes de
   diminuir sua contagem de referências.

   É uma boa ideia usar essa macro sempre que diminuir a contagem de
   referências de um objeto que pode ser percorrido durante a coleta
   de lixo.

As seguintes funções são para incorporação dinâmica de Python em tempo
de execução: "Py_IncRef(PyObject *o)", "Py_DecRef(PyObject *o)". Elas
são simplesmente versões de função exportadas de "Py_XINCREF()" e
"Py_XDECREF()", respectivamente.

As seguintes funções ou macros são apenas para uso dentro do núcleo do
interpretador: "_Py_Dealloc()", "_Py_ForgetReference()",
"_Py_NewReference()", bem como a variável global "_Py_RefTotal".
