桑海

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

默认创建的线程为joinable的,必须调用pthread_join()才可以释放所占的内存

创建分离线程detach, attr 线程函数运行结束,调用pthread_exit 其它线程调用pthread_cancle()都可以释放立刻释放所占用内存

整理自:Avoiding memory leaks in POSIX thread programming

检测是否内存泄漏:

#!/bin/bash

#https://www.ibm.com/developerworks/library/l-memory-leaks/
EXE=${1}
echo "PROGRAM ${EXE}"
DEFAULT_STACK_SIZE=`ulimit -s`
PID=`pgrep ${EXE}`
while ((1))
do
    #所有线程:已结束的和活跃的线程
    ALL_THREAD=`pmap ${PID} | grep ${DEFAULT_STACK_SIZE} | wc -l`
    #正在运行的活跃线程                                                                                                                                                                                                                                                        
    ACTIVE_THREAD=`ls /proc/${PID}/task | wc -l`
    let DISPERSION=ALL_THREAD-ACTIVE_THREAD
    echo ${DISPERSION}
    sleep 1
done

 

posted on 2017-04-20 15:34  桑海  阅读(154)  评论(0编辑  收藏  举报