Я работаю в своем университете этим летом в лаборатории изображений/видео. Совсем недавно мой профессор дал мне программу, написанную студентом-градиентом, который просто оставил программу "исправить", потому что это "давало некоторые ошибки".
Проект был написан на С++ (кажется, это повторяющийся плохой знак в коде студента). Я открыл проект в VS08 и запустил проект, и, оказывается, "ошибки" были bad_alloc. Разумеется, проблема была связана с управлением памятью или, точнее, ее отсутствием.
Программисту, казалось, нравилось смешивать mallocs, news и new [] s на протяжении всего кода, без каких-либо свободных, удаленных или удаленных []. Чтобы усугубить ситуацию, все объекты, по-видимому, делают по крайней мере 4-5 несвязанных вещей. И в довершение всего, здесь комментарий программиста:
//do not delete objects, it seems to cause bugs in the segmenter
Из того, что я вижу, есть хорошее нездоровое сочетание ссылок указателей и ссылок, и все значения изменяются путем передачи по ссылке на монолитные функции класса, которые также могут быть статическими. Во время компиляции было около 23 предупреждений --- такие вещи, как возможная потеря данных при конвертации из double в char, около 17 неиспользуемых переменных и т.д. Это время, когда я хотел бы, чтобы С++ никогда не существовало в университетах, и что вся лаборатория работа была выполнена в виде python или matlab...
Итак, профессор хочет, чтобы я "возился" с программой, чтобы она могла работать на наборах данных примерно в 10 раз больше, чем она была использована. Я признаю, что я немного боюсь сказать ей, что код - это мусор.
StackOverflow, вы, ребята, никогда не проваливались, давая хорошие советы, поэтому теперь я умоляю, любой совет по работе с подобными ситуациями был бы очень оценен.
ИЗМЕНИТЬ Код составляет около 5000 LoC
EDIT2 Профессор решил пойти с самым легким подходом. Который получал больше ОЗУ. Yay за то, что собирался бросить деньги на проблему...