觉得很有必要重新学习一下内存管理了,于是翻书,网上查资料,开始了新一轮的学习,想能成功的穿越这个“雷区”。
林锐的高质量程序设计最近一直都在手边,当然先看的是它,同时他也有一章专门讲内存管理的。
一。内存分配方式
(1)静态存储区域分配。
就是在程序编译时就已经分配好了,内存在整个程序运行期间都存在,全局变量,static都是。
(2)堆栈分配;
在函数执行期间,函数的局部变量,包括形参的储存单元都是创建在堆栈上的。函数结束时储存单元自动释放(堆栈清退)。
堆栈的内存分配特点:运算内置于处理器的指令集中,效率高,不存在数百风险,但是分配的内存有限,也能出现堆栈溢出。
(3)动态内存分配,即从堆(heap),自由储存空间上分配。
程序运行时malloc()或new申请任意数量内存在恰当时机可用free()或delete释放。
使用原则嘛:能使用堆栈和静态就不要动态了。使用较多的额外开销。
二。内存错误与对策,规则
错误1)内存分配未成功却使用
错误2)内存分配成功却为初始化
错误3)内存分配成功,也初始化了,却操作却越界
错误4)使用结束后忘记释放内存,或者释放局部内存
错误5)释放了内存去还在使用
根据这些错误可以