总线错误和段错误原因

9 篇文章 0 订阅

    总线错误引起原因: 几乎总是由于对未对齐的读或写引起的。它之所以称为总线错误是因为对未对齐的内存访问时,被阻塞的组件就是地址总线。

 

 

    段错误引起原因:

引起直接原因:
(1)解除引用一个包含非法值的指针。
(2)解除引用一个空指针(常常是从系统返回,却未经过检查)。
(3)未得到正确权限进行访问。如:向只读文本段存储值就回引起段错误。
(4)用完了堆栈或堆空间。

   出现频率来分:
1 坏指针值错误:指针赋值前用它来引用内存;或向库函数传递坏指针(系统程序出现坏指针问题很可能还是出自自己的代码中);指针释放后还访问他的内容,
指针释放后,一定要把它置为NULL。

2 改写错误:越过数组边界写入数据,在动态分配内存两端写数据,或改写一堆管理数据结构(在动态内存两端写数据就会引起这种错误)。
    p= malloc(256); p[-1]=0; p[256]=0;
         
3 指针释放引起的错误:释放一个内存块两次,或释放一个未曾用malloc分配的内存,或释放正在使用中的内存,或释放一个无效的指针。
    如:
        for(p = start; p; p= p->next)
           {
             free(p);
           }
存在程序对下一次循环中对释放的指针p进行解除引用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值