⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_32620.htm

📁 一些关于vc的问答
💻 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>{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(intCount&gt;100) return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char strDirectory[320],strPathName[320];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WIN32_FIND_DATA fd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(strDirectory,strPath);<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcat(strPath,"*.*");<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE Handle=FindFirstFile(strPath,&amp;fd);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if((long)Handle==-1) return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BOOL IsFound=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD dwAttrib;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SHFILEINFO shFinfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(IsFound)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fd.cFileName[0]!='.')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(strPathName,strDirectory);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(strPathName,fd.cFileName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwAttrib=GetFileAttributes(strPathName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dwAttrib&amp;FILE_ATTRIBUTE_DIRECTORY)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(strPathName,"\\");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FindFile(strPathName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //添加文件信息到列表框<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsFound=FindNextFile(Handle,&amp;fd);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//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 + -