查看: 4227|回复: 1

[MQX] MQX系统在进行定时器取消(_timer_cancel)时未释放内存

[复制链接]

该用户从未签到

3

主题

7

帖子

0

新手上路

Rank: 1

积分
48
最后登录
2020-4-26
发表于 2016-9-30 09:49:00 | 显示全部楼层 |阅读模式
各位大神:请教一个问题,今天在看MQX源代码时发现Timer任务在使用_timer_start_periodic_at_internal创建定时器时会调用_mem_alloc_system_zero进行系统内存申请,但是在使用_timer_cancel取消定时器时却没有将定时器从链表中删除并释放系统内存,这样的话如果一直频繁调用定时器的话不会造成内存空间耗尽问题吗???

_timer_start_periodic_at_internal函数中的代码:
   timer_entry_ptr = (TIMER_ENTRY_STRUCT_PTR)
      _mem_alloc_system_zero((_mem_size)sizeof(TIMER_ENTRY_STRUCT));
#if MQX_CHECK_MEMORY_ALLOCATION_ERRORS
   if (timer_entry_ptr == NULL) {
//      _task_set_error(MQX_OUT_OF_MEMORY);
      return TIMER_NULL_ID;
   } /* Endif */
#endif


_timer_cancel函数中的该段:
   timer_entry_ptr->VALID = 0;
   timer_entry_ptr->ID = 0;
   if (kernel_data->ACTIVE_PTR != timer_component_ptr->TIMER_TD_PTR) {
      _QUEUE_REMOVE(queue_ptr, timer_entry_ptr);
      _mem_free(timer_entry_ptr);
      _lwsem_post(&timer_component_ptr->TIMER_ENTRIES_LWSEM);
   } /* Endif */

我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2016-10-11 11:06:30 | 显示全部楼层
    _mem_free(timer_entry_ptr); 不是释放吗
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-10-28 23:19 , Processed in 0.083370 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表