首页 > 其他 > 详细

从一段代码谈GetPrivateProfileString的深坑

时间:2018-03-30 13:12:37      阅读:196      评论:0      收藏:0      [点我收藏+]
**总结:GetPrivateProfileString注意文件是否存在,

文件不存在或不具有r读权限会在运行时报内存错误。**

失败源代码如下:

string programDir = GetOcxPath(file);//得到ini配置文件路径

ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini");

这段代码看起来没任何问题,在MFC ocx工程下编译链接都ok,但运行一直内存错误。

一直以为是ocx注册没有替换,或者是GetOcxPath存在内存错误,将GetOcxPath单元测试和断点调试没有任何问题。

最后增加了文件存在判断,不存在就读取默认文件就OK了。

改进后源代码如下:

    string programDir = GetOcxPath(file);//得到ini配置文件路径
    DWORD ret;
    FILE* fp = fopen(programDir.data(),"r");
    if(!fp){
        ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini");
    }else{
        ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,programDir.data());
    }

从一段代码谈GetPrivateProfileString的深坑

原文:http://blog.51cto.com/whish/2092885

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!