Python 栈溢出问题

栈溢出

栈溢出是由于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())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,793评论 1 32
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 10,170评论 1 19
  • 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传...
    Chivalrous阅读 5,105评论 0 5
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,365评论 0 27
  • 差不多是十五年前,我还在上初中,那时大概十四、五岁的样子,第一次与文学有接触。那时候还没有现在的自媒体,在...
    芸芸可可阅读 4,659评论 4 6