Добавление строки std::cout << current_index << " " <<
(2*patch_size_level+1) * (patch_size_level - 1) << std::endl;
приводит к следующему выводу:
Где вы добавили эту строку?IME current_index
достигает 8126 до сбоя, indexCount[l]
, как в вашем случае, 2144. Вот что у нас есть:
patch_size=64
level_max=5
patch_size_level=33
indexCount[0]=2144
, но вы выполняете внутренний цикл (patch_size * (patch_size-1))
раз, что составляет 4032, и вы два приращения current_index
за внутренний цикл, что дает нам более 8000.
Возможно, вы в какой-то момент перепутали patch_size и patch_size_level, но я не уверен.