#pointers #malloc #glibc #elf
#указатели #malloc #glibc #elf
Вопрос:
Когда я запускаю команду file (мой файл), я получаю
мой файл: 64-разрядный исполняемый файл ELF LSB, ARM aarch64, версия 1 (SYSV), динамически связанный, интерпретатор / lib / ld-linux-aarch64.so.1, для GNU / Linux 3.7.0, buildId [sha1]=d0fa19146049b8f8b97701a7fc91284f157403ef, не удален
Когда я пытаюсь запустить ./my-file: * Ошибка в `./lano-campipe’: realloc(): недопустимый указатель: 0x0000000000406dc8 * Прервано (сброс ядра)
Ответ №1:
Существует порт aarch64 valgrind. Если вы запустите свою программу под этим, она, скорее всего, точно сообщит вам, что не так и где произошла ошибка.
Я предполагаю, основываясь на адресе, что вы передаете адреса (массива или строки?) to realloc
, который выделяется в разделе .data
(или .rodata
), а не в куче. Если вы запустите программу под GDB и введете эту команду
info symbol 0x0000000000406dc8
скорее всего, он напечатает символьную информацию для адреса. Вероятно, необходимо вызвать malloc
и скопировать данные в кучу, чтобы исправить эту ошибку.