Python:CrashingPython解释

2024-04-28 14:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python代码,它使Python解释器随机崩溃。我已试图找出问题的根源,但仍在调查中。在网上搜索可能导致口译员崩溃的问题时,我偶然发现:

def crash():
    '''\
    crash the Python interpreter...
    '''
    i = ctypes.c_char('a')
    j = ctypes.pointer(i)
    c = 0
    while True:
            j[c] = 'a'
            c += 1
    j

http://wiki.python.org/moin/CrashingPython

因为我使用的是Ctypes,所以我认为问题可能与Ctypes的使用方式有关。所以我试图理解为什么这些代码会导致Python解释器崩溃。理解它将有助于调查我的Ctypes代码中的问题。你知道吗

有人能解释一下吗?你知道吗

如果你能帮忙,我将不胜感激。你知道吗


Tags: the代码truehttpdefcrashctypes解释器
2条回答

问题似乎是,在那里,您正在无限期地写入内存位置。因此,当被访问的内存不可写时,程序就会崩溃。你知道吗

它生成一个指向可能不可写的内存的指针,并将其写入。你知道吗

a的数值非常小,非常低的内存地址通常是不可写的,在尝试写入时会导致崩溃。你知道吗

如果初始写入成功,它将继续尝试连续的地址,直到找到一个不可写的地址。并不是所有的内存地址都是可写的,所以它最终肯定会崩溃。你知道吗

(为什么不直接从地址0开始我不知道-这有点奇怪。或许ctypes可以明确地防止这种情况发生?)你知道吗

相关问题 更多 >