可以通过切片的Python列表分配导致溢出吗?

时间:2018-04-04 20:28:56

标签: python

大约十年前,当我在高中学习C ++时,我学会了指针和内存溢出。在C ++中,有时候,使用指针扩展(或收缩)一个数组就可以使它在分配的内存上运行(或在其下面),并导致奇怪的行为。我在Python中解释切片赋值类似于指针赋值:

a[:] = list(range(10000))  # Similar to using pointers in C++,
# because memory location remains unchanged.

那么Python如何避免溢出(或下溢)?

当然,在C ++中,我们将每个数组初始化为指定的大小,并且违反该大小的基于指针的赋值是可怕的编程实践。

1 个答案:

答案 0 :(得分:1)

Python列表是可调整大小的数组。大多数情况下,没有重新分配就有额外的空间来允许增长(和收缩)。当需要更多空间或浪费太多空间时,将重新分配内部空间。如果需要更多空间且不可用,则可能导致MemoryError。详细信息取决于实施,操作系统和操作系统设置。