为指针赋值导致硬故障

Assigning Value to Pointer Leads to Hard Fault

我已将较大错误的问题缩小为看似简单的问题。

uint8_t *vald;
*vald=46;

这对代码导致我的平台(Atmel Studio、GCC)出现硬故障

我做错了什么?

vald 未初始化,这意味着它为零或未定义,具体取决于您的编译器是否清除局部变量的堆栈帧。写入地址零总是一个错误,而写入一个未定义的地址几乎总是一个错误。

*((uint8_t*)0) = 46;