Все остальные ответы верны. Однако, если вещь, которую вы хотите выделить с помощью alloca()
, достаточно мала, я думаю, что это хорошая техника, которая быстрее и удобнее, чем с помощью malloc()
или иным образом.
Другими словами, alloca( 0x00ffffff )
опасно и может вызвать переполнение, точно так же, как char hugeArray[ 0x00ffffff ];
. Будьте осторожны и разумны, и с вами все будет в порядке.
Для вас есть книга: Эффективная работа с устаревшим кодом
Речь идет не об инструментах, а о различных подходах, процессах и методах, которые вы можете использовать, чтобы лучше понять и внести изменения в код. Он даже написан в основном с точки зрения C ++.
Используйте управление источником, прежде чем что-либо трогать!
Есть еще одна хорошая книга, в настоящее время свободно доступная в сети, об объектно-ориентированном реинжиниринге: http://www.iam.unibe.ch/~scg/OORP/
Книга «Чтение кода» Диомидиса Спинеллиса содержит множество советов о том, как получить обзор и глубокие знания о более крупных, неизвестных проектах.
Глава 6 посвящена этой теме (Работа с крупными проектами). Также главы об инструментах (Глава 9) и архитектуре (Глава 8) могут содержать полезные советы для вас.
Однако книга посвящена пониманию (путем чтения) «кода». Он не занимается непосредственно этапом обслуживания.
Первое, что я сделал бы, это попытался найти требования к продукту .
Почти немыслимо, чтобы продукт такого размера был разработан без требований.
Изучив требования, вы сможете:
В противном случае вы просто смотрите на код, пытаясь угадать намерения разработчиков ...
Если вы можете запустить код на ПК, вы можете попытаться построить граф вызовов обычно из результатов профилирования.
Также могут помочь инструменты перекрестных ссылок, такие как cscope, ctags, lxr и т. д. A
Потратив некоторое время на чтение, построение диаграмм классов или даже добавление комментариев к частям кода, которые вы долго понимали, - это шаги к ознакомлению с кодовой базой и подготовке к ее изменению / расширению.
Первое, что вам нужно сделать, это понять, как работает код. Прочтите, что есть документация, а затем посмотрите, как программа работает под отладчиком. Если вы посмотрите на основную функцию / цикл, а затем медленно углубитесь в программу, вы сможете получить довольно хорошее представление о том, как все работает. Обязательно записывайте свои выводы, чтобы у других, кто следит за вами, была лучшая позиция для начала.
Запуск Doxygen с тегом EXTRACT_ALL , установленным для документирования всех взаимосвязей в базе кода. Это не поможет вам с потоком кода, но, надеюсь, прольет свет на структуру и дизайн всего приложения.
Один очень хороший австрийский программист однажды сказал мне, что для понимания программы вы сначала должны понять структуры данных, которые она использует.