Ошибка malloc: неверная контрольная сумма - PullRequest
0 голосов
/ 02 мая 2018

Я пишу на C и получаю ошибку malloc с сообщением об ошибке:

malloc: *** error for object 0x7fe9d44026d8: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug

Цель моего кода - сохранить сгенерированный лабиринт в двумерном массиве из строки, в которой хранится лабиринт, с помощью функции read (). У меня нет проблем с чтением лабиринта в строку, но когда я передаю строку, количество строк и количество столбцов в качестве параметров функции

Что именно означает эта ошибка malloc? И как я могу определить, какая часть моего кода создает эту ошибку?

1 Ответ

0 голосов
/ 02 мая 2018

Ваша реализация malloc() выполняет дополнительные проверки, не требуемые стандартом языка C. В этом случае, кажется, обнаруживается, что некоторые данные в блоке памяти были изменены после того, как они были помечены как свободные (путем вызова free()). Это ошибка в вашей программе.

Чтобы найти виновника, используйте инструмент отладки памяти. Для систем * nix существует valgrind . В Windows вы можете использовать drmemory . Эти инструменты заменяют функции управления памятью вашей стандартной библиотеки и мгновенно уведомят вас об ошибках, таких как запись в память, которая уже была free() d.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...