首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含在可执行文件中的排序算法是否被信号11终止?

包含在可执行文件中的排序算法是否被信号11终止?
EN

Stack Overflow用户
提问于 2015-09-04 05:51:23
回答 1查看 205关注 0票数 0

我有一个带有排序算法的可执行文件(我不知道),我的实验室主要是尝试通过输入不同的情况并测试排序算法的复杂性/稳定性来解决排序算法。

我用50万行随机列表对它进行了测试,它运行良好(对50万行随机数据进行排序的时间为0.17秒)。然而,我试着输入一个包含20万行的有序列表,这就是终端提供给我的:

代码语言:javascript
复制
$ ./gen 180000 A | /usr/bin/time --format="%U seconds" ./sortB > /dev/null
Command terminated by signal 11
32.38 seconds

为什么程序要这么做?如果我没记错的话,signall 11表示分段错误,对吗?所以它在试图访问不存在的内存?该算法在50万行随机列表上运行良好,在一个有序列表的17万行上执行该算法需要29.48秒(在18万行时,它给了我一个信号11)。正如我所说的,我不能访问代码,它是一个只执行的文件,但是我想不出为什么任何排序算法都会出现这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 06:08:11

你是对的。信号11是分割故障的信号。排序可执行文件试图访问未分配或不允许程序访问或内存不存在的内存(空内存指针或垃圾指针)。

这可能是因为排序可执行文件使用系统堆栈来执行其操作(这在递归实现排序算法时很常见)。如果要排序的数组很长,系统堆栈可能会耗尽。

尝试增加系统堆栈内存和检查。Linux中有一些增加系统堆栈内存大小的命令/方法。

我希望这能帮上忙。祝好运。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32390944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档