Принимая ваш вопрос за чистую монету, у вас есть несколько вариантов. Быстрый и грязный метод заключается в добавлении дополнительного Py_INCREF в ваш код инициализации. Предполагая, что у вас нет ошибок refcount, refcount никогда не вернется к нулю, код освобождения никогда не будет вызываться, и не должно произойти сбоя. (Фактически это может быть способ управления статически размещенными объектами встроенного типа!)
Вы можете написать собственный распределитель и освобождающий модуль для вашего типа, который управляет памятью по вашему усмотрению. На самом деле вы могли бы написать собственный распределитель и обработчик для всего интерпретатора Python.
Вы можете управлять своими объектами python обычным способом, но сохранять в них указатели на данные в памяти, которой вы управляете сами.
Глядя на более широкую картину ... почему вы пытаетесь это сделать?
Также ваши комментарии, которые
Я попробовал этот код, однако он вызывает нарушение прав доступа при отладочной сборке, поскольку _ob_prev и _ob_next не установлены ..
и
//couldnt get PyObject_HEAD_INIT or PyVarObject_HEAD_INIT to compile
//however the macros resolve to this
беспокоятся! Вы успешно определили тип, который использует стандартное управление памятью, прежде чем переходить к более сложным вещам?