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

第五章 内存管理

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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值