Я бы сначала посмотрел на проблемы с повреждением памяти.Например, если вы выделите N
байтов, а затем запишете в N+100
из них, вы, скорее всего, повредите область памяти.
Это потому, что многие реализации сохраняют свою служебную информацию (размеры блоков, списокуказатели и т. д.) в строке (между фактическими областями данных).
Другой возможностью будет двойное освобождение блоков, что может вызвать проблемы, если с тех пор эта память использовалась для какого-то другого выделения (особенно если ваш адрестеперь находится в середине области данных, а не в начале).
Прежде всего, убедитесь, что вы следуете правилам.Все остальное - неопределенное поведение, и все ставки отключены.
Вы также можете опубликовать исходный код проблемы, с которой вы столкнулись, чтобы мы могли ее изучить.Если вы сделаете это, постарайтесь свести его к наименьшему примеру, демонстрирующему проблему.Только самые выделенные SOer (a) захотят просмотреть бегемота на 10000 строк, чтобы найти вашу проблему.
(а) И я, конечно, не настолько предан: -)