图 F7.5 使用动态内存分配——Figure 7.5
- 图 F7.5 使用动态内存分配——Figure 7.5
- 程序清单 L7.8 内存分配的例子——扫描模拟量的输入和报告出错
- AnalogInputTask()
- {
- for (;;) {
- for (所有的模拟量都有输入) {
- 读入模拟量输入值; (1)
- if (模拟量超过阈值) {
- 得到一个内存块; (2)
- 得到当前系统时间 (以时钟节拍为单位); (3)
- 将下列各项存入内存块: (4)
- 系统时间 (时间戳);
- 超过阈值的通道号;
- 错误代码;
- 错误等级;
- 等.
- 向错误队列发送错误消息; (5)
- (一个指向包含上述各项的内存块的指针)
- }
- }
- 延时任务,直到要再次对模拟量进行采样时为止;
- }
- }
- ErrorHandlerTask()
- {
- for (;;) {
- 等待错误队列的消息; (6)
- (得到指向包含有关错误数据的内存块的指针)
- 读入消息,并根据消息的内容执行相应的操作; (7)
- 将内存块放回到相应的内存分区中; (8)
- }
- }