Начальные мысли: где утверждения?Ваши точки доступа * в countPointsAboveThreshold () в виде массива, но вообще не проверяют границы, чтобы убедиться, что вы не прошли конец массива.Это было бы моей первой областью проверки действия памяти.Кроме того, вызовы с прямым указателем - это очень C. Черт, вы не проверяете границы ни в одном из вызовов массива.Опасный ...
Новые массивы длины 0 могут быть или не быть безопасными.Я был бы осторожен с этим.
Черт, каждый раз, когда я вижу [i - 1] в заявлении, я нервничаю.Очень легко читать мусор при i == 0
циклах i, j, k с вложенными четырьмя группами if, смешанными с continue и break?Переосмыслите эту логику.Это, кстати, СЛИШКОМ слишком сложно.
Вы рано возвращаетесь с памятью, выделенной в pointsToCalculate [].Там утечка памяти.
Могу ли я предложить разбить вашу последнюю функцию на несколько частей, чтобы упростить логику?
Человек, которого я ненавижу в стиле K & R.Хотя ваш выбор - не здесь, чтобы начать эту священную войну: P
Помимо этого, я бы пошел с моим первым предложением и убедился, что ваш конечный бул установлен всегда и что вы не выходите за пределы,Как уже предлагалось ранее, stl :: vector и несколько ссылок (предпочтительно const) - ваши друзья здесь.