现在的位置: 首页 > 综合 > 正文

读高质量c/c++编程之内存管理笔记1

2013年05月12日 ⁄ 综合 ⁄ 共 714字 ⁄ 字号 评论关闭

              在学习c/c++时,对内存管理这块一直都有很多不熟悉的地方。在温习高质量c/c++编程中的内存管理,顺便记录学习笔记。牢记再心。谢谢林锐博士的好文章。。

          1.内存分配方式

                       1)从静态存储区域分配。比如static,全局变量。这些是编译器对代码进行编译的时候就确定好了,同时这些内存在整个运行期间都存在,直到程序结束,系统自动回收。(如果是通过malloc/new的话需要自己手动释放 - -)。

                       2)在栈上创建。大多数在运行函数时,创建的变量,在函数结束时会自动被释放掉。(对于通过malloc/new的话同上)

                       3)堆上分配。也称动态内存分配。通过malloc/new申请内存,需要我们自己使用free/delete释放内存。

           2.常见的内存错误及其对策

                      1)内存分配未成功,却使用了它。解决方法是,在对指针使用时对其检验是否为NULL。如果是函数的参数,则对其断言;如果是malloc/new申请内存,则使用if(NULL == p)对其检查。这里有个疑问?如果每次malloc/new时,都对其检查会不会重复,多余??

                       2)内存分配成功,但尚未初始化。在c/c++里,如果声明一个变量,并未给它初始化时,此时它的值是随机的。尤其是内置类型,数组。

                       3)内存分配成功并初始化,但操作内存的边界。数组越界。这是一个常出错的地方。

                        4)没有释放内存。导致内存泄露。原则就是谁申请,谁释放。malloc/free,new/delete这都是应该成dui

抱歉!评论已关闭.