История изменений
Исправление
Legioner,
(текущая версия)
:
Когда второй раз вызываешь add, q_size == 1, m_size == 1. list->q_size > list->m_size не выполняется и массив не расширяется. Потом ты пишешь во второй индекс и портишь кусок памяти сразу за выделенным. В этом и есть ошибка. Там хранятся служебные данные malloc-а, которыми пользуется realloc и следующей его вызов обнаруживает эту ошибку. Это тебе ещё повезло, бывает хуже.
Для исправления надо использовать >= (35 строчка).
И проверяй результат realloc-а на NULL. Совет про valgrind двачую.
Исходная версия
Legioner,
:
Когда второй раз вызываешь add, q_size == 1, m_size == 1. list->q_size > list->m_size не выполняется и массив не расширяется. Потом ты пишешь во второй индекс и портишь кусок памяти сразу за выделенным. В этом и есть ошибка. Там хранятся служебные данные malloc-а, которыми пользуется realloc и следующей его вызов обнаруживает эту ошибку. Это тебе ещё повезло, бывает хуже.
Для исправления надо использовать >= (35 строчка).
И проверяй результат realloc-а на NULL.