Для меня все следующее приводит к segfault:
my_array->descr->subarray->shape;
my_array->dimensions;
PyArray_SHAPE(my_array);
PyArray_DIMS(my_array);
PyArray_ITEMSIZE(my_array);
PyArray_NBYTES(my_array);
Моя функция выглядит так:
static PyObject* exterior(PyObject* self, PyArrayObject* old_simplices_array)
{//code here
Остальная часть моего файла cpp выглядит так:
#include "Python.h"
#include "numpy/arrayobject.h"
/* function */
static PyMethodDef compiled_methods[] =
{
{"_exterior",(PyCFunction)exterior , METH_VARARGS},
{NULL, NULL} /* Sentinel */
};
PyMODINIT_FUNC init_alto(void)
{
(void) Py_InitModule("_alto", compiled_methods);
import_array();
}
Код Python, который передает массив «внешнему», просто передает массив NxM uint. Эта часть работает. Я могу получить доступ к шагам и данным массива. Я просто не могу определить границы итерации. Я работаю внутри шалфея, если это имеет значение.
Как я должен перебирать массив без segfaulting? Если ответ очевиден, пожалуйста, защитите свой ответ от идиотизма.
Чтобы лучше понять, как выглядит функция, см. здесь.