Параметр указателя NULL при вводе в область действия функции, но не при вызове функции - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над stm32f469, создавая некоторый голый код, чтобы попытаться использовать библиотеки libtomcrypt / libtomfastmath. Код, который я пытаюсь отладить, был проверен valgrind и работает на многих платформах, таких как macos, raspberrypi, ios, android.

Для простоты я делаю следующее, вызывая эту функцию int register_hash(const struct ltc_hash_descriptor *hash) со статической переменной const, присваивая ей адрес: register_hash(&sha256_desc). Проблема в том, что когда я нахожусь внутри функции, указатель hash равен NULL, и я не могу понять, почему.

Я думал, что это будет переполнение стека, поэтому я предварительно заполнил стек постоянным значением 0xdeadbeef, и я проверил, все ли значения были стерты или нет, и в результате стек не был переполнен.

При отладке я могу проверить значение по адресу, возвращенному &sha256_desc, и память там тоже не повреждена.

Я не делаю ни динамического выделения, ни заполнения буфера, который мог бы переполнить и повредить память.

Я компилирую с arm-none-eabi-gcc, версия 7-2017-q4-major.

В основном я ищу некоторые возможные источники проблем, поскольку у меня заканчиваются идеи.

1 Ответ

0 голосов
/ 04 июля 2018

Благодаря комментарию @ Ctx я решил проблему, скомпилировав все файлы в одном месте, вместо того, чтобы компилировать статическую библиотеку, позже связанную с моей программой.

Я не знаю, в чем была проблема, и из-за новых проблем, блокирующих меня, я не буду пытаться продолжить расследование.

...