gpt4 book ai didi

python - Python (Malloc) 的 C 扩展

转载 作者:太空狗 更新时间:2023-10-30 01:34:20 25 4
gpt4 key购买 nike

我正在为 python 编写 C 扩展。我想要做的就是将 size 作为输入,创建一个具有该 size 的对象并返回该创建对象的引用。我的代码如下所示:

static PyObject *capi_malloc(PyObject *self, PyObject *args)
{
int size;
if (!PyArg_ParseTuple(args, "i", &size))
return NULL;
//Do something to create an object or a character buffer of size `size`
return something
}

我该怎么做?我可以使用 PyMem_Malloc() 分配内存,但对返回对象的引用感到困惑。

最佳答案

如果您真正想要做的只是分配一个大小为 size 的原始内存区域并返回它(即使它不是真正正确初始化的 PyObject 类型),只需执行以下操作:

char *buf = (char *)PyMem_Malloc(size);
return (PyObject *)buf;

不确定这在任何方面是否有用,但它会编译并为您提供指向已转换为 PyObject 指针的原始内存缓冲区的指针。

(这不是你的问题,但如果你真的想要一个诚实善良的 PyObject 指针,你将不得不处理调用 PyObject_New() 函数之类的东西。文档在这里:http://docs.python.org/2/c-api/allocation.html)

关于python - Python (Malloc) 的 C 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819514/

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