嵌入式常见陷阱
malloc 慎用原因
- 容易形成碎片,长期运行内存不可预期。
- 分配/释放耗时不确定,破坏实时性。
- 调试困难,泄漏和双重释放定位成本高。
volatile 的边界
volatile只保证每次访问都触发实际读写,不提供原子性或互斥;不能单独保证线程安全。
packed 结构体 on ARM
- 关闭对齐可能导致非对齐访问,轻则性能下降,重则触发总线错误;需配合
__attribute__((packed))或手工字节序列化并留意硬件支持。
volatile 只保证每次访问都触发实际读写,不提供原子性或互斥;不能单独保证线程安全。__attribute__((packed)) 或手工字节序列化并留意硬件支持。