飞控中的内存管理:堆栈与动态分配
一次深夜的炸机事故
凌晨两点,实验室的示波器还在跳动。我盯着地面上一堆碳纤维残骸——一架刚完成姿态解算优化的四轴,在悬停测试第47秒突然失控,像喝醉的蝴蝶一样翻滚着砸向地面。黑匣子日志最后一条记录是“MALLOC_FAIL”,紧接着就是看门狗复位。
这不是我第一次被动态内存分配坑了。飞控这种硬实时系统,malloc/free就像定时炸弹,你永远不知道它什么时候会在中断服务函数里爆炸。
栈:飞控的临时工作台
先说说栈。每个任务都有自己的栈空间,就像每个工程师的办公桌——你在这上面处理临时数据,用完就清空。飞控里最典型的栈使用是函数调用时的局部变量。
void attitude_control(float roll_ref, float pitch_ref, float yaw_ref

