Char 34: runtime error: addition of unsigned offset to 0x603000000070 overflowed to 0x60300000006c

Char 34: runtime error: addition of unsigned offset to 0x603000000070 overflowed to 0x60300000006c_第1张图片
问题出在i-1这里

i 等于0的时候,candidates[i-1]used[i-1]会试图访问数组的负索引,这是未定义的行为,可能导致运行时错误。

你需要确保在进行这种操作之前检查 i 是否大于0:

if(i > 0 && candidates[i]==candidates[i-1]&&used[i-1]==0)

总结

在大多数情况下,这种类型的错误信息表示尝试访问了数组的某个位置,而这个位置不在数组的有效范围内,也就是说,你的代码试图进行越界访问。当试图访问未初始化的数组元素或者超出数组范围的下标时,都可能发生这种错误。

具体来看

runtime error: addition of unsigned offset to 0x603000000070 overflowed to 0x60300000006c (stl_vector.h)

这是一个运行时错误,它表示在执行到stl_vector.h文件中的某一行时,发生了溢出。具体来说,这是一个无符号整数溢出错误,说明程序尝试将一个正值(无符号偏移)加到一个地址上,但结果却比原地址小,这表明发生了溢出。

一般情况下,这可能是由于在访问vector的元素时使用了负索引,而在C++中,vector的索引必须是非负的,所以导致了越界错误。尤其是在这个代码中,如果 i 为0,那么 candidates[i-1]used[i-1] 就会尝试访问负索引,导致这个错误。所以必须在访问这些元素之前先检查 i 是否大于0。

修改后的代码

40.组合总和Ⅱ

class Solution {
   

你可能感兴趣的:(debug相关,c++,leetcode,算法)