电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

堆、栈及静态数据区详解VIP免费

堆、栈及静态数据区详解_第1页
1/11
堆、栈及静态数据区详解_第2页
2/11
堆、栈及静态数据区详解_第3页
3/11
内 存 分 为 代 码 区 、 全 局 数 据 区 、 堆 区 和 栈 区 。堆一般存 放动态数据,栈里一般存放局部成员。 关 于 堆 栈 和 堆 的 概 念 [问题] C++中 创 建 本 地 ( 或 者 说 局 域 ) 变 量 是 在 堆 栈 ( stack) 中 分 配 内 存 地 址 , 而 创建 全 局 变 量 则 是 在 堆 ( heap) 中 分 配 内 存 地 址 。 我 想 知 道 什 么 是 堆 ( heap) ?为 什 么 全 局 变 量 和 本 地 变 量 在 分 配 内 存 地 址 时 要 分 别 对 待 ,堆 和 堆 栈 哪 一 个 更 有效 率 ? [回答] 在 Window中执行的每一个应用程序都有其自己的内 存 地址。一部分 内 存 空间用于存 放程序代码,一部分 内 存 空间用于存 放程序执行期间创建的变量。创将变量的方法有两种,一种是在堆中,另外一种则在堆栈里。 理解堆的最好的方法是将它看成一个程序随时可以使用的内 存 块。为 了 创 建 堆 变量 , 程 序 要 使 用 “new”( 在 C++里) 操作符或 者 “malloc”( 在 C中 ) 例程 ,它们返回指向变量的指针(堆变量总是通过指针来处理和操作)。最后程 序用 “delete”( 在 C++里) 操作符或 者 “free”( 在 C中 ) 例程 来删除或 者 释放内 存 空间。 而堆栈则不同,它是某个函数被调用后随时可以创建的一小块内 存 ,被用于在函数范围内 保存 变量(也称为 自动变量)。在 函数 中 , 任何包含在 {}内 的 代 码 都有其自己的 堆 栈 。当这个函数或者{}退出时,堆栈以及它包含的所有内 容都被摧毁。因此下面的代码是不运行的: void Myfunction() { int i = 5; { int j = 6; } int k = i + j; } 所 以 本 文 问 题 的 答 案 是 :使 用 堆 栈 ( stack) 分 配 本 地 或 者 局 域 变 量 的 地 址 空 间 ,而 用 堆 ( heap) 分 配 大 块 内 存 地 址 或 者 动 态 创 建 对 象 的 情 形 。 例 如 : void MyFunction() { int i = 5; // 堆 栈 中 的 本 地 (自 动 )变 量 int *iArray; // 堆 栈 中 的 本 地 (自 动 )变 量 iArray = new int[10000]; // 这 一 行 代 码 将 在 堆 中 创 建10000个 元 素 的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

堆、栈及静态数据区详解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部