看流星社区

 找回密码
 注册账号
查看: 2163|回复: 1

防止_com_util::ConvertBSTRToString 引发的内存泄漏

[复制链接]

该用户从未签到

发表于 2016-6-13 11:20:48 | 显示全部楼层 |阅读模式

_com_util::ConvertBSTRToString 返回的是一个字符串指针

函数原型  char* __stdcall ConvertBSTRToString(BSTR pSrc);

并且这个字符串指针是一块动分配的内存,如果把这个函数做为其它函数的参数,那么这块内存就会被泄漏掉!

正确的做法如下

    char* lpszText2 = _com_util::ConvertBSTRToString(base64Pic);
    if (base64Coder.Decode(lpszText2, m_fstp, &len))
    {
     if (len > strlen(base64Pic) + 1)
     {
      delete [] m_fstp;
      m_fstp = new unsigned char[len + 1];
      memset(m_fstp, 0, sizeof(len + 1));
      base64Coder.Decode(lpszText2, m_fstp, &len);
     }
     ...
    }
    delete [] lpszText2;

该用户从未签到

发表于 2016-6-20 08:35:39 | 显示全部楼层

我就是来看看~么么哒~~
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 10:04

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表