Я работаю над этой программой уже пять месяцев. Это приложение сенсорной сети в реальном времени. Я создаю несколько связанных списков в течение жизни программы и использую malloc для создания нового узла в ссылке. Что происходит, так это то, что программа внезапно останавливается или сходит с ума и перезапускается. Я использую AVR, а микроконтроллер - ATMEGA 1281. После долгих отладок я выяснил, что проблема связана с malloc. Я не освобождаю память после выхода из функции, которая создает новую ссылку, поэтому я предполагаю, что это в конечном итоге приводит к переполнению памяти кучи или что-то в этом роде. Теперь, если я использую функцию free () для освобождения памяти в конце функции с помощью malloc, программа просто застревает, когда элемент управления достигает free (). Это потому, что память становится слишком кластеризованной после вызова free ()?
Я также создаю справочные таблицы, например, если 'head' - это новый список ссылок, и я создаю другой список с именем current и делаю его равным head.
table *head;
table *current = head;
После окончания функции, если я использую бесплатно
free(current);
current = NULL:
Тогда программа застревает здесь.
Я не знаю, что делать. Что я делаю неправильно? Есть ли способ увеличить размер кучи памяти?