You need to enable JavaScript to run this app. 运行python main.py报segmentation fault,C++扩展模块调用问题排查
优惠活动
大模型
产品
解决方案
定价
更多

运行python main.py报segmentation fault,C++扩展模块调用问题排查

段错误原因

核心是PyArg_ParseTuple调用时参数类型不匹配,触发了非法内存访问:

  • 格式符"i"要求传入int*类型的参数,用于将Python传入的整数解析为C int类型后存入对应内存地址
  • 代码中定义了const int *prop;,传入的&prop实际是int**类型,不符合要求
  • 这会导致解析到的整数值(比如示例中的18)被直接写入指针变量prop的内存空间,相当于prop被强制赋值为指向内存地址0x12,后续执行*prop读取该地址内容时触发非法访问,导致段错误。
修复方案

将prop修改为普通int类型变量,传入其地址给PyArg_ParseTuple即可,修改后的method_sum函数代码如下:

static PyObject *method_sum(PyObject *self, PyObject *args) {
  int prop; // 改为普通int变量,不需要指针

  if (!PyArg_ParseTuple(args, "i", &prop)) return NULL;

  int result = prop + prop; // 直接访问变量即可,不需要解引用
  return Py_BuildValue("i", result);
}

修改后重新执行编译安装流程,再运行python main.py即可正常输出36。

内容的提问来源于stack exchange,提问作者Tillmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:24:07