常见内存错误
- 结构体成员指针未初始化
- 结构体成员指针未分配足够的内存
- 内存分配成功,但并未初始化
- 内存操作越界
内存操作的交通规则
动态内存申请之后,应该立即检查指针值是否为NULL , 防止使用NULL指针。
free指针之后必须立即赋值为NULL。
任何与内存操作相关的函数都必须带长度信息。
malloc操作和free操作必须匹配, 防止内存泄露和多次释放
小结
- 内存错误的本质源于指针保存的地址为非法值
- 指针变量未初始化,保存随机值
- 指针运算导致内存越界
- 内存泄漏源于malloc和free不匹配
- 当malloc次数多于free时,产生内存泄漏
- 当malloc次数少于free时,程序可能崩溃