使用PyArray_SimpleNew创建PyArrayObject的分段错误

cidc1ykv  于 2024-01-06  发布在  其他
关注(0)|答案(1)|浏览(269)

我正在为NumPy创建一个C扩展。该函数应该返回一个数组,所以我决定使用PyArray_SimpleNew创建一个尺寸为50x10的PyArrayObject,然后用一些值填充它。下面是代码:

  1. PyArrayObject *a; npy_intp dims[2];
  2. dims[0] = 50; dims[1] = 10;
  3. a = (PyArrayObject *) PyArray_SimpleNew(2, dims, NPY_DOUBLE);

字符串
然而,在第三行创建数组a时产生了Segmentation Fault。你知道问题是什么吗?

mzillmmw

mzillmmw1#

我需要在我的init函数中包含import_array(),如下所示。我不知道import_array()做了什么,但解决了这个问题。

  1. PyMODINIT_FUNC
  2. PyInit_multpy(void)
  3. {
  4. import_array();
  5. return PyModule_Create(&multpymodule);
  6. }

字符串
PS:如果知道为什么PyMODINIT_FUNC中必须调用import_array(),那就太好了。如果有人知道,请解释。

相关问题