在调试以下代码时,调试器指向该行(我在下面的最后一个函数“ printResults”中注释掉的行),但是无法弄清楚问题所在以及调试器为何指向该行线。
Picasso.get()
.load(imgurl)
.into(imageV);
答案 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]的情况下,您尝试访问 未分配的区域,这会导致严重故障 中断,您将面临无法处理的异常。