C语言/C++/数据结构 编程中出现 -842150451 的情况。为什么以及如何解决

文章讲述了在编程过程中遇到的-842150451错误,通常由于未初始化的位置导致。作者通过个人案例分享了解决此类问题的思路,即定位问题、调试代码。在合并有序表的代码中,发现因判断条件错误,导致指针ppb指向了错误的位置。修正后,代码恢复正常运行。
摘要由CSDN通过智能技术生成

1.为什么

因为出现 -842150451 所在的位置没有进行初始化,就是该地址里面是空的,没有放东西。

2.如何解决

该问题的解决要根据不同代码而异---------因此今天我要讲的是“道”,即方法。

出现 -842150451 的本质我们已经知道(所在的位置没有进行初始化,地址里面没放东西),我们就需要根据自己的代码去思考,去调试哪个地方没有初始化,为什么没有初始化成功

以本人例子作为案例:

(1)出现的问题:

我在写    合并有序表(顺序方式存储)时,出现了下面的问题

(2)解决的方法---调试

     根据代码出现的问题,我们知道,在合并版块出现了问题,即出现了-842150451

于是我们去找到该版块代码去调试

     调试的过程中发现,

if (*pa >= *pb)
        {
            *pc++ = *pb++;
        }

该代码多执行了一次。

为什么? 极有可能是判断条件出了问题。

ppb(即lb最后元素的位置) 的地址位置 应该 比实际的要大

那么我们的ppb 存放的地址就是错误的

检查发现,果真,我们写成了  Elemtype* ppb = lb->elem + la->length - 1;  

而实际上 应该是                      Elemtype* ppb = lb->elem + lb->length - 1;  

改完后,代码就运行正常了。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值