Chinaunix首页 | 论坛 | 博客
  • 博客访问: 446536
  • 博文数量: 78
  • 博客积分: 2030
  • 博客等级: 大尉
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 15:25
文章分类

全部博文(78)

文章存档

2012年(1)

2011年(1)

2010年(4)

2009年(12)

2008年(60)

我的朋友

分类:

2008-10-30 18:13:35

嵌入式系统中内存泄露危害很大,且不易查找,现在列出目前我知道的原因,后续不断补充。

[1]: malloc后没有free

[2]: 线程开启方式不适当。
      线程运行结束后相关资源没有被释放。下面给一个安全的开线程的函数。

typedef pthread_t thread_T;
typedef void  *(*pthread_startroutine_t) (void *);
typedef void  *pthread_addr_t;
typedef void threadArg_T;
typedef void (*threadFunc_T)(void *);

thread_T
app_thread_create(int priority, threadFunc_T startFunc, threadArg_T *arg)
{
    thread_T             thread;
    pthread_attr_t       thread_attr;
    struct sched_param   param;

    pthread_attr_init(&thread_attr);
    /* pthread_attr_setinheritsched(PTHREAD_EXPLICT_SCHED); */
    pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);

    param.sched_priority = priority;
    pthread_attr_setschedparam(&thread_attr, ¶m);

    pthread_create(&thread, &thread_attr, (pthread_startroutine_t)startFunc,
                   (pthread_addr_t)arg);
    return(thread);
}
阅读(1114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~