从一段代码谈GetPrivateProfileString的深坑
失败源代码如下:
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()); }
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。