当前位置: 技术问答>linux和unix
关于pthread_cancel()之后的内存问题
来源: 互联网 发布时间:2015-05-25
本文导语: 我调用了pthread_creat()来生成一个新的线程来执行,我的一个操作。这个操作是一个循环的操作。里面的变量都不是new出来的,都是中规中居的,类似于char str[360]; 现在,我在父进程中,调用pthread_cancel()来cancel这个新...
我调用了pthread_creat()来生成一个新的线程来执行,我的一个操作。这个操作是一个循环的操作。里面的变量都不是new出来的,都是中规中居的,类似于char str[360]; 现在,我在父进程中,调用pthread_cancel()来cancel这个新的线程。请问各位高手,在那个新的线程中的内存释放情况是怎样的?系统是否可以给我自动的释放内存?
|
系统可以自动清除线程执行体中的局部变量
如果没有将线程设置成为detach状态,你不调用pthread_join,无法释放线程占用的系统资源
如果你使用new/malloc分配的内存必须使用delete/free释放
你可以注册线程退出回调,在回调中释放你请求的资源
man pthread_cleanup_push
如果没有将线程设置成为detach状态,你不调用pthread_join,无法释放线程占用的系统资源
如果你使用new/malloc分配的内存必须使用delete/free释放
你可以注册线程退出回调,在回调中释放你请求的资源
man pthread_cleanup_push
|
系统不会自动释放。看pthread_cleanup_push和pthread_cleanup_pop的帮助。
cancel本来就是个陷阱。
cancel本来就是个陷阱。
|
1. 你可以将子线程用pthread_detach进行分离,就无需pthread_join了,
2. 可以采用线程变量嘛,
2. 可以采用线程变量嘛,