进入函数范围但不在函数调用时指针参数为 NULL

Pointer parameter NULL when entering in function scope but not at function call

我正在研究 stm32f469,做一些裸机代码以尝试使用 libtomcrypt / libtomfastmath 库。我尝试调试的代码已经过 valgrind 检查,并且可以在许多平台上运行,例如 macos、raspberrypi、ios、android.

为了简单起见,我正在执行以下操作,通过给它的地址 register_hash(&sha256_desc) 使用常量静态变量调用此函数 int register_hash(const struct ltc_hash_descriptor *hash)。问题是,一旦我进入函数内部,hash 指针就是 NULL,我不知道为什么。

我在想这会是堆栈溢出所以我用常量值 0xdeadbeef 预填充堆栈然后我检查是否所有这些值都被删除了结果是堆栈没有溢出.

调试时,我可以验证&sha256_desc返回的地址处的值,那里的内存也没有损坏。

我没有进行动态分配,也没有进行可能溢出和破坏内存的缓冲区填充。

我正在编译 arm-none-eabi-gcc,版本 7-2017-q4-major。

我主要是在寻找一些可能的问题来源,因为我 运行 没有想法。

感谢@Ctx 的评论,我通过在一个地方编译所有文件而不是编译稍后链接到我的程序的静态库解决了这个问题。

我不知道问题出在哪里,因为我遇到了新问题,所以我不会尝试进一步调查。