我正在为C代码构建一个Python包装器
在.c
代码中,我定义了以下函数
double myfunction_at_k_and_z(struct background * pba,
struct spectra * psp,
struct perturbs *ppt,
double k,
double z,
double * pk_ic)
{ ...body of the function ...}
在.h
文件中
struct background ba;
struct perturbs pt;
struct spectra sp;
现在我在我的.pyx
文件中,在类myclass
中实现一个函数
def get_myfunction(self, double k, double z):
cdef double dummy
result = myfunction_at_k_and_z(&self.ba, &self.sp, &self.pt, k, z, &dummy)
return result
在.pxd
文件中我写到:
cdef struct background: ....
cdef struct spectra: ...
cdef struct perturbs: ...
double myfunction_at_k_and_z (background * pba, spectra * psp, perturbs *ppt, double k, double z, double * pk_ic)
其中点...
表示结构的组成部分,除了一种情况外,它们在这里不相关:在struct spectra
中有
int ln_k_size
double * ln_k
现在我的问题是,尽管编译了所有东西,但当我使用Python运行我的包装器并使用get_myfunction
到例如myclass.get_myfunction(1., 1.)
时,数组ln_k
似乎有问题,它似乎有ln_k_size
=0。这导致了分段错误
我在内存分配方面是否遗漏了什么? 有出路吗
目前没有回答
相关问题 更多 >
编程相关推荐