Параметр указателя NULL при вводе в область действия функции, но не при вызове функции
Я работаю над 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 ответ
Благодаря комментарию @Ctx я решил проблему, скомпилировав все файлы в одном месте, вместо того, чтобы компилировать статическую библиотеку, позже связанную с моей программой.
Я не знаю, в чем была проблема, и потому что у меня есть новые проблемы, блокирующие меня, я не буду пытаться исследовать дальше.