python调用.so使用过多出现段错误问题

发布于 2022-09-05 19:57:32 字数 580 浏览 50 评论 0

我用C语言写了一段计算两个python列表相似度的代码,可以使用

python2.7代码(代码正常):

import ctypes
list1 = [[]...]
list2 = [[]...]
tmp = ctypes.cdll.LoadLibrary('./main.so')
lib = tmp.sim
lib.restype = ctypes.c_double
for a in list1:
    for b in list2:
        sim = lib((ctypes.c_char_p * len(a))(*a), (ctypes.c_char_p * len(b))(*b), ctypes.c_int(len(a)), ctypes.c_int(len(b)))
        print sim

当列表比较小的时候程序运行正常,但是当列表比较大的时候,程序运行错误,
C语言的报错信息是:段错误
python的报错信息:Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
试过网上说的方法,没有解决
望大佬能指点一二

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶底世界 2022-09-12 19:57:32

太大了溢出了?大的时候有多大啊

SIGSEGV --- Segment Fault. The possible cases of your encountering this error are: 

1.buffer overflow --- usually caused by a pointer reference out of range. 

2.stack overflow --- please keep in mind that the default stack size is 8192K. 

3.illegal file access --- file operations are forbidden on our judge system.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文