栈溢出
栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。
在Python中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出
class Stack:
def __init__(self):
self.stack= []
def push(self, value):
self.stack.append(value)
def get(self):
return self.stack.pop()
def is_empty(self):
return self.size() == 0
def size(self):
return len(self.stack)
def size(self):
return self.stack[self.size() - 1]
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.get())
print(stack.get())
print(stack.get())
print(stack.get())