登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: clr/cli 造成线程生成时的内存泄漏?     [回主站]     [分站链接]
标题
clr/cli 造成线程生成时的内存泄漏?
clq
浏览(0) + 2010-07-28 23:28:23 发表 编辑

关键字:

clr/cli 造成线程生成时的内存泄漏?

            HANDLE h = ::CreateThread(0,0,(LPTHREAD_START_ROUTINE)start_thread2, NULL,0,0);
            if (h != NULL)
            {
                ::CloseHandle(h);
            }

开启 clr 编译的话一定会有内存泄漏,多生成几个就会看到内存一直在涨,用 ProcessExplorer 查看发现线程一直在增加根本没有退出过!(即使我的线程函数 start_thread2 是一个空函数)

而取消 clr 编译后就没有这种情况了。是 vs2008 的 bug 还是 clr 的线程池? 还是我的 vs2008 没打补丁的缘故? 不知道,但是 clr 我又是要用的,解决办法倒是很简单,在调用 CreateThread 函数的文件最前面加上一行

 #pragma unmanaged

另: _beginthreadex 函数也是一样的。

clq
2010-7-29 10:44:12 发表 编辑

如果是线程外 new 了物体,那么在线程内 delete 的话也是不行的,就算是有  #pragma unmanaged 内存泄漏一样存在。

clq
2010-7-29 10:44:31 发表 编辑

这个应该是 clr 的问题了。


总数:2 页次:1/1 首页 尾页  
总数:2 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1