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;
改完后,代码就运行正常了。