什么? VecGetArray()?我也试过了哦~
错误如下:
纠结了一段时间,在高人指点下,终于发现了问题所在。
原来VecGetOwnershipRange()这个函数返回的[start,end),用 VecSetValues()对向量进行赋值时,索引值下界为0,但对向量进行取值时,索引下界是1。上面的代码忽略了这个因素,所以会出现内存访问越界。
比如说:
start = 0时,会访问xx_v(0),这个必然会出错。只需把
最后一个do i = istart, iend-1 改为do i = istart+1, iend 即可
下面给出正确的代码: