LINUX.ORG.RU

Выход за пределы границ массива

private int[] getHistogram(Bitmap grayscale) {
   int width = grayscale.getWidth();
   int height = grayscale.getHeight();
   // TODO: Fine tune the performance here, tracking on b/123615079.
   int[] histogram = new int[256];
   for (int row = 0; row < height; row++) {
      for (int col = 0; col < width; col++) {
         int pixel = grayscale.getPixel(col, row);
         int y = Color.red(pixel) + Color.green(pixel) + Color.blue(pixel);
         histogram[y]++;
      }
   }

mimico
()
Ответ на: комментарий от mimico

Ну это ещё ладно…

А как вот с таким подходом потом памятью жонглировать?

fornlr ★★★★★
() автор топика
Ответ на: комментарий от superuser

Да, действительно, туплю. Осталось понять, почему ошибка не воспроизводилась ранее, ведь найти картинку, у которой сумма компонент будет больше 255, должно быть совсем несложно. Это любой совсем белый пиксел, например. Или серый, который ярче 34% серого, что должно встречаться очень часто.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

Ну так вылет недалеко обычно ничего страшного не представляет, а чем дальше тем хуже.

И выделение памяти опасное.

fornlr ★★★★★
() автор топика
Последнее исправление: fornlr (всего исправлений: 1)

Обои ставят раком Android смартфоны

А если просто открыть картинку в фуллскрине тоже сработает? Почему не ломает другие девайсы, на андроиде решили написать свою парсилку изображений?

Интересно, это никаких патентов эпола не нарушает? Или там только про юникод?

ЗЫ: на картинках нет копытных

Но почему?!

micronekodesu ★★★
()
Ответ на: комментарий от fornlr

Так ведь в Java в отличии от c++ всегда проверяются границы массивов, не? Если вылет будет, то в 100% случаев будет exception и если его никто не поймает, то приложение упадёт (и если это что-то системное, то может быть плохо). Так чтобы вылетел за границу и иногда падал иногда нет не должно быть.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Блин, я не заметил что это Java.

Ну так ещё проще.

fornlr ★★★★★
() автор топика

на картинках нет копытных

А как хотелось…

Korchevatel ★★★★★
()
Ответ на: комментарий от superuser

Фрагмент кода, который цитировали выше - на Java.

KivApple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.