堆栈溢出

堆栈是一组相同数据类型的组合,具有一定的容量限制,一旦超出这个容量限制,就会发生堆栈溢出。当堆栈的空间已经被数据占满时,再向其中存放数据,就会超出堆栈的容量,此时将会发生上溢;而当堆栈中已经没有数据,此时再从堆栈中取出数据将会发生下溢。堆栈溢出的原因包括堆栈尺寸设置过小、递归调用过深、函数调用层次过深等。

堆栈区别

堆栈区别_空间分配和管理方式不同

空间分配和管理方式不同

堆一般由程序员控制空间的分配和释放,可以动态扩张或缩减,因此堆的大小不固定。而栈由编译器自动管理,分为动态分配和静态分配。编译器完成静态分配,alloca()函数完成动态分配,并由编译器进行释放。

 堆栈区别_申请的空间大小不同

申请的空间大小不同

由于堆由程序员控制分配和释放空间,大小不固定,所以堆获得的空间一般比较大且灵活。栈是一块连续的内存区域,系统会预先规定好栈的最大容量和栈顶的地址,因此能从栈获得的空间较小。

 堆栈区别_申请效率不同

申请效率不同

由于堆是程序员分配,所以容易产生碎片且速度较慢,但是使用方便。栈是由系统自动分配,程序员无法控制,但是速度更快。

堆栈区别_内存地址增长方向不同

内存地址增长方向不同

堆是向高地址扩展的数据结构,从内存的低地址向高地址,沿着内存地址增加的方向增长。栈是向低地址扩展的数据结构,增长方向与堆相反,是从内存的高地址向低地址,沿着内存地址减小的方向增长。

堆栈平衡

当我们在堆栈中进行操作的时候,压入堆栈的地址可能会在中途发生变化。所以如果要返回父程序,那么在执行 RET 指令前,必须保证 ESP 指向我们之前压入堆栈的地址。如果指向的地址错误,那么堆栈会不平衡,导致程序崩溃。如果我们通过堆栈传入参数,那么就必须要在函数执行完毕之后,平衡由参数导致的堆栈变化。

堆栈的特点

堆栈具有如下特点:

  • 堆栈的存取速度仅次于直接位于 CPU 中的寄存器,存取速度非常快;
  • 内存大小可以进行动态分配;
  • 必须确定存在栈中的数据大小与生存期,具备较高的灵活性;
  • 在读取数据时,按照堆栈指示器中的地址读取数据,会自动减少堆栈指示器中的地址数。

亚马逊云科技在堆栈上的优势

  • 云中可拓展存储:Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,可提供业界领先的可扩展性、数据可用性、安全性和性能。这意味着各种规模和行业的客户都可以使用它来存储和保护各种使用案例(例如湖内数仓、网站、移动应用程序、备份和还原、存档、企业级应用程序、IoT 设备和大数据分析)的任意量的数据。
  • 云中的低成本归档存储:Amazon Glacier 是成本极低的存储服务,为数据存档和备份提供安全而持久的存储。为了降低成本,Amazon Glacier 专门针对不经常访问的数据以及可以接受数小时检索时间的数据进行了优化。利用 Amazon Glacier,客户可以可靠地存储大量或少量数据。
  • PB 级数据传输:Amazon Snowball 是一种 PB 级数据传输解决方案,使用安全器件将大量数据输入亚马逊云科技云中,或从亚马逊云科技云中输出数据。使用 Snowball 解决大规模传输数据时遇到的常见问题,例如网络成本高、传输时间长,以及安全隐患等。使用 Snowball 传输数据非常简单、快速和安全,且传输成本可以低至使用高速网络传输数据成本的五分之一。

亚马逊云科技热门云产品

Amazon S3

Amazon S3

为可从任何位置检索任意数量的数据而构建的对象存储

Amazon Glacier 存储类

Amazon Glacier 存储类

云中的低成本归档存储

Amazon Snowball

Amazon Snowball

迁移 PB 级数据集

欢迎加入亚马逊云科技培训中心

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程
从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程
  • 快速上手训练营
  • 第一课:亚马逊云科技简介

    本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。

    亚马逊云科技技术讲师:李锦鸿

    第二课:存储与数据库服务

    您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。

    亚马逊云科技资深技术讲师:周一川

    第三课:安全、身份和访问管理

    在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。

    亚马逊云科技技术讲师:马仲凯
  • 账单设置与查看
  • 视频:快速完成税务设置

    部署时间:5 分钟

    视频:账户账单信息

    部署时间:3 分钟

    视频:如何支付账单

    部署时间:3 分钟

  • 动手实操
  • 快速上手云上无服务器化的 MySQL 数据库

    本教程将引导您创建一个Aurora Serverless 数据库并且连接上它。

    部署时间:10 分钟

    启动一台基于 Graviton2 的 EC2 实例


    本教程将为您讲解如何在云控制台上启动一台基于 Graviton2 的 EC2 实例。

    部署时间:5 分钟

    使用 Amazon Systems Manager 进行云资源统一跟踪和管理

    在这个快速上手教程中,您将学会如何使用 Amazon Systems Manager 在 Amazon EC2 实例上远程运行命令。

    部署时间:10 分钟

准备好体验亚马逊云科技提供的云服务了吗?

新用户享受中国区域 12 个月免费套餐

快速注册账号 畅享 40+ 免费云服务

快速注册账号 畅享 40+ 免费云服务

跟随注册步骤详解,三分钟快速创建账号,领取免费权益   立即注册 »

跟随注册步骤详解,三分钟快速创建账号,领取免费权益   立即注册 »

  • 1 进入注册页面
  • 1. 打开中国区

    输入邮箱 - 邮箱验证

    1. 打开中国区 账号注册页面

    输入邮箱 - 邮箱验证
    01
    填写您
    注册账号的邮箱
    点击“继续”
    01
    填写您
    注册账号的邮箱
    点击“继续”
    02
    查看您的
    注册账号邮箱
    02
    查看您的
    注册账号邮箱
    03
    输入
    邮箱中收到的验证码
    点击“继续”
    03
    输入
    邮箱中收到的验证码
    点击“继续”
    注:该链接中的内容显示语言 是与您的网页浏览器设置相一致的,您可以根据需要自行调整语言栏。 *图片点击可放大
  • 2 设置用户名及密码
  • 2. 填写用户名密码

    设置用户名 - 设置密码 - 确认密码

    2. 填写用户名密码

    设置用户名 - 设置密码 - 确认密码
    01
    请设置您的
    账号用户名
    *例如: webchina
    01
    请设置您的
    账号用户名
    *例如: webchina
    02
    为您的帐号
    设置密码
    02
    为您的帐号
    设置密码
    03
    重新
    输入密码
    03
    重新
    输入密码
    *图片可点击放大
  • 3 填写企业信息
  • 3. 填写账号联系人以及公司信息

    3. 填写账号联系人以及公司信息

    填写姓名 - 填写联系电话 - 填写公司名称 - 填写办公地址 - 选择是否需要发票 - 点击查看客户协议
    填写姓名 - 填写联系电话 - 填写公司名称 - 填写办公地址 - 选择是否需要发票 - 点击查看客户协议
    01
    填写公司联系人
    姓名全称
    01
    填写公司联系人
    姓名全称
    02
    填写公司联系人的
    联系电话
    02
    填写公司联系人的
    联系电话
    03
    填写
    公司名称
    *重要! ! !公司名称请务必与您所提供的营业执照公司名称保持一致
    03
    填写
    公司名称
    *重要! ! !公司名称请务必与您所提供的营业执照公司名称保持一致
    04
    填写
    公司办公地址
    省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码
    04
    填写
    公司办公地址
    省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码
    05
    请选择
    是否需要发票
    05
    请选择
    是否需要发票
    06
    您可以点击查看
    客户协议
    您可以点击查看客户协议勾选方框表示您已阅读,并同意客户协议的条款
    06
    您可以点击查看
    客户协议
    您可以点击查看客户协议勾选方框表示您已阅读,并同意客户协议的条款
    *图片可点击放大
  • 4 企业信息验证
  • 4. 企业信息验证

    上传企业执照 - 填写负责人姓名 - 填写联系方式 -上传身份证件

    4. 企业信息验证

    上传企业执照 - 填写负责人姓名 - 填写联系方式 -上传身份证件
    01
    在此上传
    企业注册执照
    01
    在此上传
    企业注册执照
    02
    请填写网络安全负责人的
    姓名

    请注意: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致

    02
    请填写网络安全负责人的
    姓名

    请注意: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致

    03
    请填写网络安全负责人的
    联系方式
    有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)
    03
    请填写网络安全负责人的
    联系方式
    有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)
    04
    在此上传网络安全负责人的
    身份证件

    请注意:当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿

    04
    在此上传网络安全负责人的
    身份证件

    请注意:当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿

    *图片可点击放大
  • 5 完成手机验证
  • 5. 完成手机验证

    输入手机号 - 输入验证码

    5. 完成手机验证

    输入手机号 - 输入验证码
    01
    在此填写
    手机号
    01
    在此填写
    手机号
    02
    请输入您收到的
    4 位
    验证码
    02
    请输入您收到的 4 位
    验证码
    03
    请点击
    继续
    03
    请点击
    继续
    *图片可点击放大
  • 6 选择支持计划
  • 6. 选择支持计划

    选择一个亚马逊云科技支持计划

    6. 选择支持计划

    选择一个亚马逊云科技支持计划
    请根据需求
    选择一个支持计划
    请根据需求
    选择一个支持计划
    *图片点击可放大
关闭
1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域
关闭
由光环新网运营的
北京区域
由西云数据运营的
宁夏区域