zoukankan      html  css  js  c++  java
  • Segment fault 常见原因

    [https://blog.csdn.net/qq_22238021/article/details/79872978]

    本质原因在于:程序访问了非法的地址

    1.引用空指针
    2.野指针
    3.访问越界

    造成的原因有多种:
    主观原因:
    1.新申请指针忘记赋NULL,也忘记分配空间,直接使用造成非法访问。
    2.为指针赋值时,地址经过计算而来。计算过程有问题,导致赋值的地址不正确,
    比如地址经过计算涉及到类型转换之类操作,很容易因为类型转换造成截断。

    客观原因:
    3.保存指针的空间被修改,比如你结构体中的一个成员是指针变量,它前面一个成员也是指针变量,
    当前面的成员访问越界时,修改了后面成员的值,即前面操作踩了后面的空间,或者被其他程序踩到。
    当再引用后面的指针时,就会发生段错误。或者free后面的指针时也会发生错误。

    避免方法:
    主观方面:
    1.新申请指针赋NULL。
    2.malloc和free一定要成对使用。
    3.地址由计算得来时一定要小心处理,避免计算原因造成错误的地址。
    客观方面:
    4.怀疑发生段错误原因是指针地址被踩时,移动该成员到前面一点的位置,避免被踩,验证能否解决问题。

  • 相关阅读:
    三阶魔方公式
    XML解析GData、XMLParser
    xib_cell布局适配高度
    SizeClass
    Storyboard界面传值
    Masonry(第三方库)的使—代码实现屏幕适配
    UITableView
    AFNetworking网上加载数据及JSON解析
    UICollectionView
    OC面向对象-多态
  • 原文地址:https://www.cnblogs.com/How-Come/p/11884345.html
Copyright © 2011-2022 走看看