惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
量子位
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
Y
Y Combinator Blog
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Security Blog
Microsoft Security Blog
B
Blog
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
博客园 - 聂微东
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks

博客园 - hong

VBA命令按钮操作 - hong - 博客园 VBA访问word菜单 - hong - 博客园 RUP核心概念解析 RUP 核心概念 IBM Rational 技术文档下载 项目管理规范-RUP管理实施 感叹人生 遗憾 C#中的类型相等与恒等(Equality & Identity) Windows Vista workshop 理解抽象类和接口 线程概念 开始找工作了 BI理解 Web Service基础 改变人的一生的五句话 在web页面中显示多页的tif文件 sql日期转换问题 Visual Studio Team System资源
堆和栈的区别
hong · 2006-09-05 · via 博客园 - hong

一般认为在c中分为这几个存储区 

1栈 - 有编译器自动分配释放 
2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 
3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块 
区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 
- 程序结束释放 
4另外还有一个专门放常量的地方。 - 程序结束释放 

区别:
2、栈的空间大小有限定,vc的缺省是2M,堆的空间大小是没有限定的
3、栈有系统管理,堆有程序员管理,所以堆用不好会发生内存泄漏
4、频繁的new和free,堆上会产生内存碎片,栈不会
5、栈比在堆上存取数据快些,栈更快速高效,
6、栈是有系统支持的,而堆是有函数库提供的
7、只有少数数据类型列入int、float等会在栈上分配,大多数用户类型都在堆上。
8、栈是系统数据结构,对于进程/线程是唯一的;堆是函数库内部数据结构,不一定唯一