释放被删除线程的内存地方在哪里啊

发布于 2014-12-30 20:48:46
如题,我最近在使用应用模块的时候发现执行应用模块的线程都已经没有了,但是应用模块还没有被删除掉,想看看删除的这段代码在哪里研究一下我这个出现了什么问题。

查看更多

关注者
0
被浏览
1.7k
6 个回答
lee88688
lee88688 2014-12-30
我找到了,在idle线程中,不过我看到了应用模块的回收的地方,貌似还是跟引用有关系,感觉如果引用不为0,就不会删除模块。我在调试的时候列出来了应用模块看到的确引用是1。应该是这个原因导致没有将模块删除。不过我在看代码的时候发现其中
            /* destroy module */
if (module->nref == 0)
rt_module_destroy(module);

module->nref <= 0 我感觉改成这个比较好,我就遇到过变成-1的。
grissiom
grissiom 2014-12-31
变成 -1 意味着 获取/释放 不配对,应该是哪里有 bug 了~
lee88688
lee88688 2015-01-02
变成 -1 意味着 获取/释放 不配对,应该是哪里有 bug 了~

我没有仔细的看,不过貌似是的,之前我问过一个关于应用模块的问题,说的就是在其中一个应用模块调用另外一个然后就出现了-1,两个应用模块最后都没有从内存中被释放掉,但是对应的线程确实释放掉了。
ta00at
ta00at 2015-01-04
你好,我想问一下,如果线程释放掉了,如何查看模块有没有从内存中释放掉?
lee88688
lee88688 2015-01-05
你好,我想问一下,如果线程释放掉了,如何查看模块有没有从内存中释放掉?

finsh中有个命令叫做list_modue(),可以列出当前系统中的应用模块

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友