【发布时间】:2014-10-14 06:20:53
【问题描述】:
我尝试编写包含 python 类的 C 扩展。
该类将文件名作为构造函数的参数fname,然后将该文件加载到内存并作为配置存储。
低于我所拥有的:
typedef struct {
PyObject_HEAD
XmlConfig m_cfg;
} PyAgent;
static int PyAgent_init(PyAgent *self, PyObject *args) {
const char *fname;
if (!PyArg_ParseTuple(args, "s", &fname)) {
return NULL;
}
self->m_cfg.Load(fname);
return 0;
}
static PyTypeObject PyAgentType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
"classify.Agent", /* tp_name */
...
}
...
尝试加载文件时出现分段错误。据我了解,这是因为 PyAgent struct 的对象大小因文件的内存分配而增加。
我尝试使用 PyObject_VAR_HEAD 宏,但没有帮助。
你能给出一个线索或类似的例子吗?
【问题讨论】:
标签: python c++ c segmentation-fault python-c-extension