你可能不知道的FindFirstFile

    这是我写的一个查找文件或文件夹的函数

    BOOL IsFileCreated(char* fileName)

    {

         HANDLE handle;

         WIN32_FIND_DATA  file;

         handle = FindFirstFile(fileName, &file);

         if(handle == INVALID_HANDLE_VALUE){

             return 0;

         }

         else{

             return 1;

         }

    }

    在我的专案中我一直用这个函数,没觉得有什么问题,最近专案中有个问题,有个公用的文件夹一直删不掉,删除的时候总显示文件正在被使用,也不是是什么问题,后来团队的成员问我,你的程序有没有访问这个文件夹啊,我说没有啊,后来他们又问,你查找文件时释放句柄了,我一想,好像没,赶紧改了一下,变成如下:

        else{

            CloseHandle(handle);

        }

    结果还是不行,我于是又仔细看了一下MSDN,上边关于FindFirstFile的返回值是这样写的,说这个返回值是一个查找文件的句柄(之前我根本不知道查找文件的句柄是何物),在网上一查,查找文件的句柄要用FindClose()来关闭,而在我的认知里,所有HANDLE型的变量都可以使用CloseHandle来关闭的(懂得太少)。

    最后改成

         else{

             FindClose();

             return 1;

         }

    问题终于被解决。

    以后再写函数的时候,尤其是那种经常会被用到的基本功能函数,一定要注意这些释放的问题。

    记载一下这个问题,希望对大家有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值