那线程我只能RETURN 0 让他自动返回结束?为什么要提供个exitthread呢?
非常感谢你的回答,非常有道理啊我现在那程序估计和这个关系不大了,因为我发现他运行过程中内存也小量递增从9:06 5924k
10:07 5928
10:23 5964资源管理器看的,他不是每秒递增,而是分时间段,而且时间段内不规则递增而代码内我比喻:
线程中
while(1){ if(A(a)){}
else {
B(a);
}}其中A ,B都是硬件供应商提供的DLL接口,而a是个外类的static handle*
有问题吗对另外一帖的回答者感敬意,同时开新帖再讨论
非常感谢你的回答,非常有道理啊我现在那程序估计和这个关系不大了,因为我发现他运行过程中内存也小量递增从9:06 5924k
10:07 5928
10:23 5964资源管理器看的,他不是每秒递增,而是分时间段,而且时间段内不规则递增而代码内我比喻:
线程中
while(1){ if(A(a)){}
else {
B(a);
}}其中A ,B都是硬件供应商提供的DLL接口,而a是个外类的static handle*
有问题吗对另外一帖的回答者感敬意,同时开新帖再讨论
用 boundschecker的确是个很高效的方法 。
如果有 delete语句,但是实际因为某种原因没能执行到,也会引起内存泄露。
事实上这个退出泄漏我也找到原因了
是线程退出CSTRING不由你释放boundschecker也不是太强你试试编个按钮加int *p;for(int i=0;i<1000;i++)
{
p=new int[i*100];
}然后用BOUNDSCHECKER测试
不提示泄漏的加不加DELETE都一样
new / new [] ---- delete / delete []
malloc ---- free
CoTaskMemAlloc ---- CoTaskMemFree
SysAllocString ---- SysFreeString
SafeArrayCreate ---- SafeArrayDestroy
CreatePen/CreateBrush ---- DeleteObject
GetDC ---- ReleaseDC
ITypeInfo::GetTypeAttr() ---- ITypeInfo::ReleaseTypeAttr()
COleSteamFile::OpenStream,
CreateStream, CreateMemoryStream ---- COleStreamFile::Close()2. 使用performance察看内存在哪个时段增加后没有释放。在cmd中键入perfmon,就可以打开,至于怎么用上网自己查。3. 再就是使用一个类CMemorySate,来查看某段代码申请内存后是否释放。这个类很简单自己看看MSDN就能会用。
跟你学了一招
下次用用 呵呵