C总结-第五章 内存管理(5/6)

来源:互联网 发布:java游戏破解版 编辑:程序博客网 时间:2024/06/05 05:39

第五章 内存管理

1. 野指针:地址不确定的指针

int *p = NULL;  //不使用时都指向NULL,0地址处,防止野指针产生

 

2. 静态区、队(heap)、栈(stack,也称堆栈)

1)静态区:保存自动全局变量和static变量(包括static全局和局部变量),静态区在程序的总个生命周期内部存在,由编译器编译时分配

2)堆:由malloc系列函数或new操作符分配内存,其生命周期由free或delete决定,没有释放之前一直存在,直到程序结束

3)栈:保存局部变量,只在函数内有效,函数运行结束时销毁

 

3. 常见的内存错误

1)指针没有指向一块合法的内存

①结构体成员指针未初始化

②没有为结构体指针分配足够的内存

2)为指针分配的内存太小

3)内存分配成功,但未初始化(定义指针时请初始化,避免使用野指针)

4)内存越界:一般由于数组或指针出现“多1”或“少1”

5)内存泄露(内存被占用完):

①malloc分配的内存是连续的,必须检查是否已成功分配内存

②malloc和free一定要配对使用

6)内存已经释放,却还在使用

①free之后,指针一定要置空(p = NULL)

②函数返回栈内存(避免在函数内返回定义指针)

③内存使用太复杂,弄不清释放了哪块,哪块没有释放

0 0
原创粉丝点击