如何采用PyArray/numpy数组分配的内存?

2024-03-29 00:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

目标

我想在c++中拥有由我的c++扩展调用的python函数返回的numpy ndarray内存缓冲区的所有权(如果这有意义的话。。。连续,Py_REFCNT(array)==1)。你知道吗

背景

我希望将这个指针传递给另一个库(我无法更改)。我可以从它采用的原始指针为这个库构造一个Buffer。这个库使用写时拷贝缓冲区,所以在Buffer对象消失之前,我不能简单地保留ndarray对象的副本。你知道吗

我试过的

清除NPY_ARRAY_OWNDATA标志不走运。 也不使用设置array->data = 0array->nd=0。 我仍然有“双重自由或腐败”的错误。我猜这是因为ndarray仍在释放记忆。你知道吗

环境

我仅限于python2.6和numpy1.4.1(RedHat/CentOS 6)


Tags: 对象函数内存pynumpy目标bufferarray