C/C++内存分配方式总结——来自《高质量编程指南》
来源:互联网 发布:fx168外汇数据 编辑:程序博客网 时间:2024/05/16 07:56
C/C++内存分配方式有3种:
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好了(即已经编址),这些内存在程序的整个运行都存在。例如全局变量,static变量等。
(2)在堆栈上分配。在函数执行期间函数内局部变量(包括形参)的存储单元都创建在堆栈上,函数结束时这些存储单元自动释放(堆栈清退)。堆栈内存分配运算内置于处理器的指令集中,效率很高,并且一般不存在失败的经验,但是分配的内存容量有限,可能出现堆栈溢出。
(3)从堆或自由存储空间上分配,亦称动态内存分配。程序在运行期间用malloc()或new申请任意数量的内存,程序员自己掌握释放内存的恰当时机(使用free()或delete)。动态内存的生命周期由程序员决定,使用非常灵活,但也最容易产生问题。
一般的原则是:如果使用堆栈存储和静态存储就能满足应用要求,那么就不要使用动态存储。这是因为,在堆上动态分配内存需要很可观的额外开销:
1. 应用程序将调用操作系统中内存管理模块的堆管理器,搜索其中是否有符合要求的空闲的连续字节内存块。特别是在经过多次动态分配后,堆会变得“千苍百孔”——出现大量的闲散内存碎片,此时可能需要首先进行碎片合并,然后才能分配成功,在这种情况下动态分配需要很长时间。
2. 如果动态分配失败,需要检查返回值或者捕获异常,这也需要额外开销。
3. 动态创建的对象可能被删除多次,甚至在删除后还会继续使用,或者根本就不会被删除,于是出现运行时错误或程序“吃”内存的现象。
- C/C++内存分配方式总结——来自《高质量编程指南》
- 内存分配和常见错误——高质量C、C++编程指南
- 高质量c++(内存分配方式)
- 《高质量C++/C编程指南》笔记——内存管理1-2
- 读书笔记——高质量C++/C编程指南
- 高质量C++/C编程指南 -- 内存管理之一
- 高质量C++/C编程指南 -- 内存管理之二
- 高质量 C++/C 编程指南 林锐 摘要 内存管理
- 内存管理:高质量C++/C编程指南
- 高质量C编程指南
- 高质量C++/C编程指南 学习总结
- 高质量C编程指南——第1章
- 高质量C++/C编程指南(参考文献)
- 高质量C++/C编程指南
- 高质量C++/C编程指南
- 高质量C++/C 编程指南
- 读《高质量C++/C编程指南》
- 高质量C++/C编程指南
- #pragma mark的用法
- MVN详解
- u-boot 和 linux/kernel 中的机器码一致性问题
- 等待队列 PK 工作队列
- Andoid init.c
- C/C++内存分配方式总结——来自《高质量编程指南》
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- Linux设备驱动----之一 cdev
- Latex数学公式中的空格 导数
- 公交车蕴含的软件开发思想
- centos6.2 下安装vlc播放器
- dojo
- POJ1753-Flip Game