从一段代码谈GetPrivateProfileString的深坑-创新互联
**总结:GetPrivateProfileString注意文件是否存在,
文件不存在或不具有r读权限会在运行时报内存错误。**
失败源代码如下:
成都创新互联专注于企业全网整合营销推广、网站重做改版、临潼网站定制设计、自适应品牌网站建设、H5技术、商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临潼等各大城市提供网站开发制作服务。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());
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:从一段代码谈GetPrivateProfileString的深坑-创新互联
分享URL:http://pwwzsj.com/article/dodici.html