gpt4 book ai didi

algorithm - 可执行文件中包含的排序算法是否被信号 11 命令终止?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:07 25 4
gpt4 key购买 nike

我有一个带有排序算法(我不知道)的可执行文件,我的实验室基本上是通过在不同情况下输入并测试它的复杂性/稳定性来尝试找出排序算法。

我在一个包含 500,000 行的随机列表上对其进行了测试,它运行良好(对 500,000 行随机数据进行排序需要 0.17 秒)。但是,我尝试输入 200 000 行的有序列表,这是终端给我的:

$ ./gen 180000 A | /usr/bin/time --format="%U seconds" ./sortB > /dev/null
Command terminated by signal 11
32.38 seconds

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

最佳答案

你是对的。信号 11 是 Segmentation Fault 的信号。排序可执行文件正在尝试访问未分配或不允许程序访问或内存不存在的内存(NULL 内存指针或垃圾指针)。

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

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

希望对您有所帮助。祝你好运。

关于algorithm - 可执行文件中包含的排序算法是否被信号 11 命令终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32390944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com