打印
[应用相关]

不会进入到硬件中断

[复制链接]
277|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pangb|  楼主 | 2020-1-11 23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
结构体指针初始化的问题:
我定义了一个结构体:
typedef struct  
{
        float Test[10];
        u32 addr;
        u16 Count;
        u16 Safe_Cnt;
        u16 Danger_Cnt;  
        u16 Year;
        u8 Month;
        u8 Day;
        u8 Hour;
        u8 Minute;
        u8 Seconds;
        u8 TestResualt;
        u8 TestState;
}RecordStruct; //共59个字节

RecordStruct *OutData;

初始化的时候给他分配内存:
OutData = (RecordStruct*)malloc(sizeof (RecordStruct));
这样调试程序的时候总是会在初始化分配内存的时候进入硬件中断,错误提示是“IMPRECISERR"不精确数据总线错误,但是如果我定义的时候将结构体中的最后一个字节“u8 TestState”去掉的话程序就能够正常执行,不会进入到硬件中断,这是为什么呢?

使用特权

评论回复
沙发
xxrs| | 2020-1-11 23:30 | 只看该作者
跟下malloc函数看下,是不是bss段内存空间不够啦

使用特权

评论回复
板凳
pangb|  楼主 | 2020-1-11 23:34 | 只看该作者
如果BSS段不够的话,编译应该会提示错误吧,我的编译没有问题

使用特权

评论回复
地板
dengdc| | 2020-1-11 23:37 | 只看该作者
你的代码给bss分配的空间有多大,看你的现象像是只要malloc超过某个长度就出问题。

使用特权

评论回复
5
dengdc| | 2020-1-11 23:38 | 只看该作者
如果可以的话  你看下malloc函数的返回是不是失败了,成功之后再使用这段内存,没成功就是用肯定会有问题。

使用特权

评论回复
6
juventus9554| | 2020-1-11 23:46 | 只看该作者
你让那个分配内存大小+1试试。

使用特权

评论回复
7
spark周| | 2020-1-11 23:49 | 只看该作者
是对齐的问题吧。

使用特权

评论回复
8
磨砂| | 2020-2-4 09:55 | 只看该作者
结构体空间够吗

使用特权

评论回复
9
晓伍| | 2020-2-4 10:23 | 只看该作者
有可能是空间不够了

使用特权

评论回复
10
八层楼| | 2020-2-4 10:43 | 只看该作者
总中断开启了吗

使用特权

评论回复
11
观海| | 2020-2-4 11:30 | 只看该作者
用示波器看看能有这个波形吗

使用特权

评论回复
12
keaibukelian| | 2020-2-4 11:43 | 只看该作者
没有遇到过这种错误

使用特权

评论回复
13
labasi| | 2020-2-4 11:46 | 只看该作者
看不好这个问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝