内存操作经典问题2

常见内存错误

  • 结构体成员指针未初始化
  • 结构体成员指针未分配足够的内存
  • 内存分配成功,但并未初始化
  • 内存操作越界

内存操作的交通规则

动态内存申请之后,应该立即检查指针值是否为NULL , 防止使用NULL指针。

free指针之后必须立即赋值为NULL。

任何与内存操作相关的函数都必须带长度信息。

malloc操作和free操作必须匹配, 防止内存泄露和多次释放

小结

  • 内存错误的本质源于指针保存的地址为非法值
    • 指针变量未初始化,保存随机值
    • 指针运算导致内存越界
  • 内存泄漏源于malloc和free不匹配
    • 当malloc次数多于free时,产生内存泄漏
    • 当malloc次数少于free时,程序可能崩溃
原文地址:https://www.cnblogs.com/yanyun888/p/9213284.html