2016-03-08 65 views
2

因为CPython是用C语言实现的,所以当它从stdin中读取一行时,如果该行超过给解释器读取的字符串的默认大小,会导致缓冲区溢出还是Python处理它?Python的raw_input()容易受到缓冲区溢出的影响吗?

+0

FWIW,你可以看到'raw_input'的C源代码[这里](https://hg.python.org/cpython/file/014060738f7f/Python/bltinmodule.c#l2299),虽然我猜你会还需要阅读GNU ['readline'](http://cnswww.cns.cwru.edu/php/chet/readline/readline.html)函数,因为'raw_input'使用它,如果它可用的话。 –

回答

7

Python动态调整字符串大小;它不容易出现溢出(尽管如果输入很大,当它不能进一步扩展缓冲区时,它可能会引起MemoryError)。

Python以块读取输入,并且如果在读取另一个块之前未找到换行符而填充缓冲区,则增长缓冲区。