调试代码后找不到问题

时间:2018-11-26 20:49:01

标签: c function debugging

在调试以下代码时,调试器指向该行(我在下面的最后一个函数“ printResults”中注释掉的行),但是无法弄清楚问题所在以及调试器为何指向该行线。

Picasso.get()
         .load(imgurl)
         .into(imageV);

2 个答案:

答案 0 :(得分:0)

看看这一行

printf("The maximal word lexicographically is: %s\n", words[size]);
                                                      ^^^^^^^^^^^

数组中的最后一个有效元素在索引size-1处,但是您使用size对该数组进行索引。换句话说-越界访问。

因此更改为

printf("The maximal word lexicographically is: %s\n", words[size - 1]);
                                                      ^^^^^^^^^^^^^^^

顺便说一句:

此行

if (strcmp(strings[i], strings[i + 1]) >= 0) {

似乎在两个字符串相同的情况下打开了一个无限循环。您可能不想要>=,而只想要>

答案 1 :(得分:0)

认为在声明数组时数组的减速度不将索引0作为第一个元素 但是,例如,当您使用该数据的第一个索引的地址时,请考虑使用“ get”声明一个数组

int x[5];

这样做是告诉编译器分配5个可用的整数内存地址,因此您将获得一个分配的区域,大小为5。 假设编译器为您提供5个从0x20000580--0x20000584开始的地址 通过写作

x[0] = data0;// you are writing data to  the address of 0x20000580-> data0             
x[1]= data1;// 0x20000581-> data1 
...
x[4]= data4 //0x20000584->data4

因此,在您尝试写入x [size]即x [5]的情况下,您尝试访问    未分配的区域,这会导致严重故障     中断,您将面临无法处理的异常。