首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

内存泄漏,该怎么处理

2012-10-05 
内存泄漏C/C++ code//获取当前路径下的DLL文件路径char *se(char *)malloc(MAX_PATH)seGetExecuteDirto

内存泄漏

C/C++ code
//获取当前路径下的DLL文件路径char *se=(char *)malloc(MAX_PATH);se=GetExecuteDirtory();strcat(se,"\\sample.dll"); //此处可以得到类似 D:\test\sample.dll 这样的路径//获取临时文件路径TCHAR szTempPath[MAX_PATH];memset(szTempPath,0,MAX_PATH);GetTempPath(MAX_PATH,szTempPath);  /[color=#FF0000]/运行到这里之后se的值丢失了,不知道为什么么[/color]


[解决办法]
我不大懂你说的消失是什么回事?不过se=GetExecuteDirtory();这行已经造成内存泄漏了。可以改成
strcpy(se,GetExecuteDirtory() ) ;
[解决办法]
char *se=(char *)malloc(MAX_PATH);
se=GetExecuteDirtory();
strcat(se,"\\sample.dll"); 

第一句让指针se指向了新分配的内存空间,第二句让se指向了函数GetExecuteDirtory的返回值所在的地址。所以,第二句已经修改了指针指向的位置。所以,第三局本想放到新开辟的空间里,但是第二句已经修改了指针指向的位置。
[解决办法]
C/C++ code
//获取当前路径下的DLL文件路径char *se;char te[MAX_PATH+20];se=GetExecuteDirtory();strncpy(te,se,MAX_PATH-1);te[MAX_PATH-1]=0;strcat(te,"\\sample.dll"); //此处可以得到te类似 D:\test\sample.dll 这样的路径//获取临时文件路径TCHAR szTempPath[MAX_PATH];memset(szTempPath,0,MAX_PATH*sizeof(TCHAR));GetTempPath(MAX_PATH,szTempPath); 

热点排行