文档章节

关于堆栈

yintao
 yintao
发布于 2013/07/04 07:10
字数 421
阅读 23
收藏 0

堆栈的区别体现在两个层面:

一。操作系统方面
1.堆区:由用户自己分配与释放内存的区
2.栈区:由编译器自动分配内存的区,一般是局部变量,函数参数

注:除了上述两个区,还有静态区(全局变量,静态变量),字符串常量区(字符串常量)。

    这些都是内存中的区,这里复习一下:

    一个由c/C++编译的程序占用的内存分为以下几个部分
    1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
    2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
    3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
    4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
    5、程序代码区—存放函数体的二进制代码。

二。数据结构方面
1.堆:以数组存储的完全二叉树。若为最大堆则,子节点的值不大于父节点,最小堆则不小于。
2.栈:先进后出的顺序表。

© 著作权归作者所有

共有 人打赏支持
yintao
粉丝 8
博文 63
码字总数 45783
作品 0
大连
程序员
私信 提问
CX0069:错误:变量需要堆栈帧?

这段来自《C语言深度剖析》关于指针的部分 #include int main() { // int i=10; int *p=(int *)0x00bef95c;//0x00be95c是变量i的地址 *p=NULL;//这一行的问题 p=NULL; return 1; } 在VS2010下...

SBaof
2014/12/19
962
4
关于查看混淆后log查看问题

前面记录了两篇关于如何做混淆的文章,但混淆之后,如果遇到问题,log日志是无法查看的,对应的都是混淆后的类、方法,这时候就需要用retrace.bat指令(retrace.bat|retrace.sh [-verbose] m...

tyronejw
2016/01/13
1K
0
关于z-index的那些事儿

日期:2013-3-6 来源:GBin1.com 关于z-index的真正问题是,很少有人理解它到底是怎么用。其实它并不复杂,但是如果你从来没有花一定时间去看具体的z-index相关文档,那么你很可能会忽略一些...

gbin1
2013/03/07
2
0
从JS引擎理解Await b()与Promise.then(b)的堆栈处理

译者按: Async/Await真的只是简单的语法糖吗?No! 原文:Asynchronous stack traces: why await beats .then() 作者: Mathias Bynens: Google V8引擎开发者 译者:Fundebug 为了保证可读性...

Fundebug
08/08
0
0
Ruby和Python分析器是如何工作的?

你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查。 这也有助于回答很多人的问题:“你怎么写一个profiler?” 在这篇文章中,我们只关注...

oschina
2017/12/19
2.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

正则表达式匹配不包含

^((?!xxx).)*$

安小乐
12分钟前
1
0
python Windows tkinter应用开发3 列出目录的所有文件

在本章中,我们将编写程序来执行此操作。 1)选择文件夹。 2)在UI的标签部分打印该文件夹中的所有文件名(带文件扩展名)。 首先,修改selectFile函数以打开文件夹。主文件如下: from tki...

python测试开发人工智能安全
13分钟前
1
0
使用Laya引擎开发微信小游戏(上)

  使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏。      img      作者:马晓东,腾讯前端高级工程师。      微信小游戏的推出也快一年时间了,...

SEOwhywhy
18分钟前
1
0
react程序开发问题记录

1、webpack.config.dev.js文件的publicpath配置

teamlog
30分钟前
2
0
javascript 值转换为布尔值

任意javascript 的值都可以转换为布尔值。 特别是在 if() 等判断中使用的时候: 下面这些值会被转换为 false undefined , null , 0 , -0 , NaN , "" 空字符串 来自 JavaScript 权威指南 书籍...

之渊
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部