2016-03-08 64 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以塊讀取輸入,並且如果在讀取另一個塊之前未找到換行符而填充緩衝區,則增長緩衝區。