C++内存分配方式(——选自:C++内存管理技术内幕)
2015-07-30 11:15
323 查看
C++内存分配的区:
1.栈:程序运行时分配的,局部变量,以及传入的参数等存储的地方,在程序结束的时候会回收
2.堆:new分配,由delete释放
3.自由存储区:malloc分配
4.全局/静态存储区:全局变量或静态变量存储的地方
5.常量存储区:存储常量的地方,不允许修改
堆和栈的区别:
1.管理的方式不同,堆是程序员自己管理,而栈是由编译器管理
2.空间的大小不同,堆基本没有限制,而栈很容易就溢出
3.生长方式不同,堆是地址上向上增加的,而栈是向着内存地址减小的方向变化。
4.分配的方式不同,堆是由程序员自己动态分配,动态释放的,而栈都是由编译器自己分配自己释放的
5.能否产生碎片不同,当大量的多次动态分配内存时会产生碎片,影响程序的执行效率,而栈上不会,因为栈的分配
6.分配的效率不同,堆分配内存的效率低下
1.栈:程序运行时分配的,局部变量,以及传入的参数等存储的地方,在程序结束的时候会回收
2.堆:new分配,由delete释放
3.自由存储区:malloc分配
4.全局/静态存储区:全局变量或静态变量存储的地方
5.常量存储区:存储常量的地方,不允许修改
堆和栈的区别:
1.管理的方式不同,堆是程序员自己管理,而栈是由编译器管理
2.空间的大小不同,堆基本没有限制,而栈很容易就溢出
3.生长方式不同,堆是地址上向上增加的,而栈是向着内存地址减小的方向变化。
4.分配的方式不同,堆是由程序员自己动态分配,动态释放的,而栈都是由编译器自己分配自己释放的
5.能否产生碎片不同,当大量的多次动态分配内存时会产生碎片,影响程序的执行效率,而栈上不会,因为栈的分配
6.分配的效率不同,堆分配内存的效率低下
相关文章推荐
- C++运行时
- C++优先队列的用法与求集合的交集并集差集
- C语言关于补码的解释及误区
- 你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针
- 深入解析C++和JAVA的字符串
- C语言面试题大汇总之华为面试题
- 枚举--熄灯问题
- 如何在C++中实现按位存取
- 读书笔记MoreEffectiveC++(30)
- Sublime Text 2 配置C++运行,带黑窗口,支持中文[windows]
- [LeetCode] 038. Count and Say (Easy) (C++/Python)
- 阿里巴巴校园招聘内推C++研发岗位电话面试
- C语言中的各种文件读写方法小结
- C++ 静态成员变量和静态成员函数
- 在C++中执行cmd指令的两种方法
- C/C++多参数处理
- C语言用指针改变PC
- C++ getLine&suplit&double
- C++之Concept
- C与C++的区别与相互调用