visual leak detector 降序输出

摘要: 上一篇讲到embed python使用crtDumpMemoryLeak有大量烦人的memory leak,有好心人做了patch,但是是基于2.7的,尝试在2.54用,结果不行。所以走另一条路,VLD是检查MemoryLeak的另一方法,不像crt,VLD可以捕获关心的dll和exe的内存泄露,对于python,忽略他好了。并且使用起来比crtDumpMemoryLeak简单而且有callstack的输出,找问题更轻易一些,详见http://vld.codeplex.com/。略不如意的是crtDumpMemoryLeak是按照block的序号从大到小输出,我们知道出现memory leak 阅读全文
posted @ 2011-09-07 22:10 风行水上 阅读(263) 评论(0) 推荐(0) 编辑

Windows embed python's memory leak

摘要: 写个简单测试python嵌入程序只有2行代码 Py_Initialize(); Py_Finalize();就一堆的内存泄露,虽然说这属于一次分配的内存,不算实际意义的内存泄露,有这么一堆程序真正的内存泄露就不好找了。网上看到同样情况的文章。http://unknownerror.net/2011-07/60068-python-virtual-machine-memory-leak.html继续找https://bitbucket.org/xg/python-embed-patches可惜是2.65,而工作中用的是2.54,不过对照着他的change,改起来差不多。记之。 阅读全文
posted @ 2011-09-07 00:12 风行水上 阅读(303) 评论(0) 推荐(0) 编辑

Win7下程序结束为何没有调用 DLL_PROCESS_DETACH?

摘要: 不调用DLL_PROCESS_DETACH,crt库就无法在正确的时机调用crtDumpMemoryleaks()而如果手动调用crtDumpMemoryleaks()1.放在在Main函数退出时,全局和静态变量没有析构2.放在全局变量中,c++无法控制全局变量初始化顺序所以残念了。强制结束是会导致不调用DLL_PROCESS_DETACH,但是没有啊通过google发现这居然是Win7的bug,因为PlaySound引起的http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/8cb1847d-3218-4610-9cb8-69 阅读全文
posted @ 2011-09-04 23:44 风行水上 阅读(1363) 评论(0) 推荐(0) 编辑

windows下怎么等待线程结束

摘要: 有三个方法假设thread = CreateThread(0,0,thread_func,...)UINT thread_fun(void* f){while(1) do ...1. g_thread_exit = true2. SetEvent(thread_exit)3. ... do nothing}相对的,主线程的等待是1. while(!g_thread_exit)2.WaitForSingleObject(thread_exit)3.WaitForSingleObject(thread)其中1,2类似,3才是最完美的,因为1,2只是事件发生点,可线程本身还在执行,比如thread_ 阅读全文
posted @ 2011-09-01 09:35 风行水上 阅读(2071) 评论(0) 推荐(0) 编辑

浮点数的计算中出现-1#IND

摘要: 在vc的环境中-1#IND表示无穷小,算术错误可以得到-1#IND,比如 printf("%f",sqrtf(-1.f));这样的bug还是好改的。另一个可能出现-1#IND的原因是用到了MMX指令但是没有调用__asm emms;这会导致使用float的场合随机的出现-1#IND,可能你printf扰动一下,程序又会正常。有一篇文章http://chadaustin.me/2009/02/ind-and-qnan-with-fpfast/描述的更清楚,就不复述了。我发这个帖子这里如果某人真遇到了同样的问题,却英文不好或者google用的关键字不正确,到了这里是否有种幸福感 阅读全文
posted @ 2011-08-29 11:52 风行水上 阅读(437) 评论(0) 推荐(0) 编辑