在函数范围内输入但在函数调用时不指向指针参数NULL

时间:2018-07-04 12:59:13

标签: c bare-metal stm32f4 libtomcrypt

我正在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预填充了堆栈,并检查是否所有这些值都被擦除,结果是堆栈未溢出。 / p>

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

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

我正在使用arm-none-eabi-gcc(版本7-2017-q4-major)进行编译。

我主要在寻找一些可能的问题来源,因为我的构想已耗尽。

1 个答案:

答案 0 :(得分:0)

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

我不知道问题出在什么地方,因为我遇到了新的问题,所以我不会尝试进一步调查。