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
如果是线程外 new 了物体,那么在线程内 delete 的话也是不行的,就算是有 #pragma unmanaged 内存泄漏一样存在。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.