我想在c ++中获取从我的c ++扩展名调用的python函数返回的numpy ndarray内存缓冲区的所有权(当这有意义时......连续,Py_REFCNT(array)==1
)。
我希望将此指针传递给另一个库(我无法更改)。我可以从它采用的原始指针为这个库构造一个Buffer
。这个库使用写时复制缓冲区,因此我不能简单地保留ndarray对象的副本,直到Buffer
对象消失。
清除NPY_ARRAY_OWNDATA
标志没有运气。
设置array->data = 0
和array->nd=0
也是如此。
我仍然得到双重自由或腐败"错误。我推测这是因为ndarray仍然以某种方式释放了那段记忆。
我受限于python 2.6和numpy 1.4.1(RedHat / CentOS 6)