python - 使用 Py_SetPath() 和 Py_GetPath() 后的 Python C API free() 错误
问题描述
我试图弄清楚为什么我不能简单地通过它的 C API 获取和设置 python 路径。我在 Ubuntu 17.10 上使用 Python3.6,gcc 版本为 7.2.0。编译:
gcc pytest.c `python3-config --libs` `python3-config --includes`
#include <Python.h>
int main()
{
Py_Initialize(); // removes error if put after Py_SetPath
printf("setting path\n"); // prints
Py_SetPath(L"/usr/lib/python3.6"); // Error in `./a.out': free(): invalid size: 0x00007fd5a8365030 ***
printf("success\n"); // doesn't print
return 0;
}
设置路径工作正常,除非我也尝试在这样做之前获取路径。如果我完全获得了路径,即使只是在不修改返回值或任何内容的情况下进行打印,我也会收到“双重释放或损坏”错误。
很迷茫。我做错了什么还是这是一个错误?如果是这样,有人知道解决方法吗?
编辑:调用后也会出错Py_Initialize();
。更新了代码。即使我不先调用 Py_GetPath() 现在也会出错。
解决方案
推荐阅读
- php - mysql数据库中的每个条目都添加了另一个带有时间戳的空行
- jenkins - Jenkins & Sonarqube - 非法反射
- http - 从应用程序检查 Internet 连接
- sql - SQL,比较varchars时出现大小写问题
- wordpress - 如何将 wp-admin/edit.php 类别过滤器更改为多选?
- angular - 使用 Angular Animate 模块在两个表单之间切换
- database - Visual Basic 2010 中的更新错误
- ios - CGPath 与 UIBezierPath
- android - 在 Android 中构建 Unity 应用程序时出错
- angular - 将 kendo-angular 消息与 ngx-translate 一起使用?