C++内存分配方式(——选自:C++内存管理技术内幕)
2024-09-03 02:58:17
C++内存分配的区:
1.栈:程序运行时分配的,局部变量,以及传入的参数等存储的地方,在程序结束的时候会回收
2.堆:new分配,由delete释放
3.自由存储区:malloc分配
4.全局/静态存储区:全局变量或静态变量存储的地方
5.常量存储区:存储常量的地方,不允许修改
堆和栈的区别:
1.管理的方式不同,堆是程序员自己管理,而栈是由编译器管理
2.空间的大小不同,堆基本没有限制,而栈很容易就溢出
3.生长方式不同,堆是地址上向上增加的,而栈是向着内存地址减小的方向变化。
4.分配的方式不同,堆是由程序员自己动态分配,动态释放的,而栈都是由编译器自己分配自己释放的
5.能否产生碎片不同,当大量的多次动态分配内存时会产生碎片,影响程序的执行效率,而栈上不会,因为栈的分配
6.分配的效率不同,堆分配内存的效率低下
最新文章
- 深入理解iOS开发中的BitCode功能
- HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法
- [Flash 3D] 又是一个难题解决了。(Flash3D在android中运行)
- 当一名黑客获得一份WebShell后,会做什么
- [ActionScript 3.0] AS3 绘制正二十面体(线条)
- POJ 1507
- json和jsonp的使用格式
- 【HDOJ】1979 Fill the blanks
- 关于ASPOSE.WORD使用上的一个小问题
- Css Div半透明
- WCF跟踪分析 使用(SvcTraceViewer)
- Python中的文件路径的分隔符
- 【Unity Shaders】Lighting Models 介绍
- PAT1116: Come on! Let's C
- cmd常用
- 【webdriver自动化】整理API框架(主要是关键字,具体例子在本地)
- POJ 3207 Ikki's Story IV - Panda's Trick (2-sat)
- IDEA Spring-boot-devTools 无效解决办法二
- 设计模式之迭代器模式(Iterator Pattern)
- angularjs 依赖注入原理与实现