📄 subject_32620.htm
字号:
<p>
序号:32620 发表者:高守 发表日期:2003-03-13 14:52:53
<br>主题:关于查找文件递归函数所出现的资源消耗过大问题:)
<br>内容://这段代码会导致Windows的显示界面不稳定,如右键菜单显示不完整等,情况是这样的,如果搜索文件1000个以下的时候,是没有问题的,当搜索文件超过如10000个以上,系统的资源就会被耗到乱七<BR>八糟!不知是不是递归函数中的“char strDirectory[320],strPathName[320];”所产生的资源消耗影响的:)<BR>求各位大侠赐教解决方案!谢谢!<BR><BR>应用:<BR>FindFile("C:\\");<BR>函数:<BR>void FindFile(char *strPath)<BR>{ <BR> if(intCount>100) return;<BR> char strDirectory[320],strPathName[320]; <BR> WIN32_FIND_DATA fd;<BR> strcpy(strDirectory,strPath);<BR> strcat(strPath,"*.*");<BR> HANDLE Handle=FindFirstFile(strPath,&fd); <BR> if((long)Handle==-1) return;<BR> BOOL IsFound=1;<BR> DWORD dwAttrib;<BR> SHFILEINFO shFinfo;<BR> while(IsFound)<BR> { <BR> if(fd.cFileName[0]!='.')<BR> {<BR> strcpy(strPathName,strDirectory);<BR> strcat(strPathName,fd.cFileName);<BR> dwAttrib=GetFileAttributes(strPathName);<BR> if(dwAttrib&FILE_ATTRIBUTE_DIRECTORY)<BR> {<BR> strcat(strPathName,"\\");<BR> FindFile(strPathName);<BR> }<BR> else<BR> { <BR> //添加文件信息到列表框<BR> }<BR> }<BR> IsFound=FindNextFile(Handle,&fd); <BR> }<BR> //FindClose(Handle);<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:微笑的撒旦 回复日期:2003-03-13 15:08:44
<br>内容:可以设个static int变量统计一下这个函数在返回前被调用了多少次,这样可以计算一下在返回前被分配了多少的资源,递归函数需要用栈来保存临时变量,如果递归很深的话一定会有问题。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -