C语言的字节型指针转换为字型指针导致死机

2019-07-21 04:45发布

本帖最后由 ZDawn 于 2019-3-4 15:48 编辑

测试代码如下:
uint8_t a[8] = {0};
int main(void)
{
    uint32_t temp;
    uint32_t *p = (uint32_t *)&a[0];


    temp = *p;    //运行此句会硬件跑飞
    while(1);
}


这种情况会是什么原因呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
ZDawn
1楼-- · 2019-07-21 05:06
破案了!!!
字节型指针转换为字型指针的时候,字节型指针所指向的地址必须是4的倍数才不会死机。也就是说 数组a的地址必须是4的倍数
lvkanger
2楼-- · 2019-07-21 07:39
如何确定程序跑飞了?
ZDawn
3楼-- · 2019-07-21 10:35
lvkanger 发表于 2019-3-4 15:28
如何确定程序跑飞了?

对,单步调试的时候发现程序跑到 HardFault_Handler()中断那里去了
323232
4楼-- · 2019-07-21 13:16
 精彩回答 2  元偷偷看……
ZDawn
5楼-- · 2019-07-21 17:09
我在STM32F103RC上运行这段测试代码没问题,但是到了GD32上面运行就死机了
lvkanger
6楼-- · 2019-07-21 20:15
ZDawn 发表于 2019-3-4 15:29
对,单步调试的时候发现程序跑到 HardFault_Handler()中断那里去了

我测试了,不跑飞啊,代码正常

一周热门 更多>