总第004篇
接上篇,这篇主要归纳一下C++中的内存使用问题。
1、内存的分配方式
- 从静态存储区分配。这种方式在程序编译的时候已经分配好,在程序的整个运行期间均存在,如全局变量、静态变量;
- 从栈上创建。在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数结束时这些单元被自动释放,栈内存分配运算内置于处理器指令集中,效率较高,但容量有限;
- 从堆上分配。程序运用malloc或new申请任意多少的内存,用户手动用free或delete释放。动态内存的生存周期由我们决定,使用灵活,但也容易出问题。
2、常见的内存错误及处理方法
- 内存未分配成功去使用它。故在malloc或new申请内存后,立即检查指使是否为NULL,防止使用指针为NULL的内存;
- 内存分配成功但未初始化。故不要忘记为数组或动态内存赋初值,防止未被初始化的内存作为右值使用;
- 分配成功也初始化但越界。故要注意不要让数组或指针下标越界;
- 忘记释放内存,造成泄漏。故动态内存申请与释放必须要配对;
- 释放了内存却继续使用它。这有三个方面:
首先,程序中对象调