python中的分段错误[重复]

Posted

技术标签:

【中文标题】python中的分段错误[重复]【英文标题】:segmentation fault in python [duplicate] 【发布时间】:2013-03-30 16:43:12 【问题描述】:

如何在 python 2.7.3 中运行以下程序

import sys
sys.setrecursionlimit(2 ** 20)
def f(x):
    if (x==0): return 0
    else: return f(x-1)+1
print f(200000)

此代码在 Ubuntu 中收到分段错误。

【问题讨论】:

您似乎超出了您的堆栈。您可以增加递归限制,但这不会增加您的堆栈大小。尝试将其重写为循环。 见***.com/a/2918118/90308 【参考方案1】:

Python 解释器的堆栈空间不足。与处于相同情况的任何其他进程一样,它会被操作系统杀死。

您可以尝试增加操作系统堆栈大小限制 (ulimit -c)。

更好的方法可能是重写您的代码,使其不需要这么深的递归(您的特定示例可以简单地转换为迭代)。

【讨论】:

我的代码是我知道这个问题的一个例子。没有递归,原始代码很难重写。 ulimit -c 5000000 但我又得到了 SF。 应该是“ulimit -s”ss64.com/bash/ulimit.html。 "ulimit -a" 应该为您提供所有系统默认值和用于设置这些值时的必要标志。

以上是关于python中的分段错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C函数调用分段错误[重复]

在c ++中嵌入python:分段错误[重复]

返回指针时出现分段错误[重复]

python跟踪分段错误

总线错误与分段错误

C++中char指针中的memset的分段错误(核心转储)[重复]