您的位置:首页 > 编程语言 > C语言/C++

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

2012-05-31 22:51 288 查看
在学习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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: