gpt4 book ai didi

python - PyList_GetItem 不是幂等的

转载 作者:行者123 更新时间:2023-12-01 05:37:20 25 4
gpt4 key购买 nike

我正在尝试 Swig,并分别具有以下 C 代码和接口(interface):

// example.c
#include <Python/Python.h>
PyObject *test ( PyObject *self, int i) {
PyObject **x;
x = malloc(sizeof(PyObject *));
*x = PyList_GetItem(self, i);
return *x;
}

// example.i
%module example
%{
/* Put header files here or function declarations like below */
extern PyObject* test(PyObject *self, int i);
%}

extern PyObject* test(PyObject *self, int i);

它编译正确,我可以很好地导入扩展模块。事实上,当我将变量 a 定义为 [{1:1},{2:2}] 并第一次执行 example.test(a, 0) 时,它正确返回 {1,1}。当我在 Python shell 中输入 a 时,我得到了预期的 [{1:1},{2:2}] 。当我再次尝试 example.test(a,0) 时,出现段错误。有什么想法为什么会发生这种情况吗?

最佳答案

PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)
Return value: Borrowed reference.

在返回对象之前增加对象。

关于python - PyList_GetItem 不是幂等的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com