今天编程的时候犯的两个错误
2006-10-17 22:59
267 查看
今天编程犯的两个错误,都花了挺长时间才发现的,感觉如果养成好的编程习惯这两个问题都能避免。
1。sprintf(szPreCommandline, "%s%s", TEXT("regsvr32.exe"), szPreCommandLine);
在这个语句之前给szPreCommandLine赋了一个dll文件的路径,期望调用这个命令行反注册dll,结果发现反注册失败,一直没看出代码有什么问题。最后无奈的用windbg跟了一下,发现szPreCommandLine变量对应的内存里居然是一串regsvr32.exeregsvr32.exeregsvr32.exe...原来在往内存中写的时候,这行代码导致了递规,在写第二个格式控制符的时候,szPreCommandLine已经不是dll的路径了而是“regsvr32.exe%s”
2。
代码 #define BTTRAY_MUTEX TEXT("globle//Bluesoleil2_BtTray_Mutex")
while(null != (hMutex = openMutex(MUTEX_ALL_ACCESS, FALSE, BTTRAY_MUTEX )))
{
sleep(500);
nCount ++;
if(nCount>10)
{
break;
}
}
通过这段代码来等待一个进程结束,结果发现每次都是nCount=11的时候break出来的,但进程都已经结束了。
原因:每次openMutex()完了之后没有CloseHandle(),导致Mutex的ref count一直不为0,所以即使进程结束,也不会释放mutex。
1。sprintf(szPreCommandline, "%s%s", TEXT("regsvr32.exe"), szPreCommandLine);
在这个语句之前给szPreCommandLine赋了一个dll文件的路径,期望调用这个命令行反注册dll,结果发现反注册失败,一直没看出代码有什么问题。最后无奈的用windbg跟了一下,发现szPreCommandLine变量对应的内存里居然是一串regsvr32.exeregsvr32.exeregsvr32.exe...原来在往内存中写的时候,这行代码导致了递规,在写第二个格式控制符的时候,szPreCommandLine已经不是dll的路径了而是“regsvr32.exe%s”
2。
代码 #define BTTRAY_MUTEX TEXT("globle//Bluesoleil2_BtTray_Mutex")
while(null != (hMutex = openMutex(MUTEX_ALL_ACCESS, FALSE, BTTRAY_MUTEX )))
{
sleep(500);
nCount ++;
if(nCount>10)
{
break;
}
}
通过这段代码来等待一个进程结束,结果发现每次都是nCount=11的时候break出来的,但进程都已经结束了。
原因:每次openMutex()完了之后没有CloseHandle(),导致Mutex的ref count一直不为0,所以即使进程结束,也不会释放mutex。
相关文章推荐
- 今天使用git 添加远程github仓库的时候提示错误:fatal: remote origin already exists.
- 我学编程时犯的最大两个错误
- 由今天的错误引发对编程的思考总结
- 今天maven install时碰到的两个问题(堆溢出和编译错误)
- 今天学习的时候偶然发现了一个有趣的题目,可以用编程实现。
- 我学编程时犯的最大两个错误
- 今天安装mysql时候出现错误MySQL conflicts with mysql-
- 我在学习编程中犯的两个最大错误
- 是时候写点东西了,今天开始写posix多线程编程。
- * Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
- 今天安装mysql时候出现错误MySQL conflicts with mysql-4.1.20-2.RHEL4.1.i386
- maven提示invalid LOC header (bad signature)的解决办法 今天执行mvn test的时候提示: 错误:读取 /home/subaochen/.m2/reposi
- 今天学习的时候偶然发现了一个有趣的题目,可以用编程实现。
- pycharm导入模块的时候遇到的两个错误
- 今天连遇两个错误,CENTOS改错SELINUX后不能启动,POSTFIX设置错误,不能转发
- 今天碰到的两个oracle错误
- 今天的两个收获--linux的特性和海森堡式错误
- 我在学习编程中犯的两个最大错误 (转)
- 在学习编程中犯的两个最大错误
- 干货--安装eclipse-hadoop-plugin插件及HDFS API编程两个遇到的重要错误的解决