freshbug's notes

freshbug的代码人生

bekilledlzyID:bekilledlzy
[修改头像]
12037次访问,排名8272(-5)好友0人,关注者0
bekilledlzy的文章
原创 17 篇
翻译 0 篇
转载 32 篇
评论 6 篇
freshbug的公告
访问www.freshbug.com
自2007年10月16日
freshbug的联系方式:
freshbug@gmail.com
最近评论
loadend:你好,我想问一下,那注册google ad帐户的时候不是要填网址嘛,填什么呢?是不是填http://blog.csdn.net/用户名/??
freshbug:stl里面有一些静态变量 不能跨dll vector有时候能跨dll是因为连续的内存分布

跨模块传输数据最好是能用C风格的结构 用C++类很容易出问题
wang:我是向dll中传一个map指针,结果也是it++之后就内存泄漏
wang:我也遇到了类似问题。
远离尘嚣:老大,能把你的Uft8ToAnsi是自定义的转码函数共享一下嘛?万分感谢!
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    who's freshbug?
    技术站点
    老牛们的blog
    咨讯
    存档

    原创 std::map 迭代器偏移出错

    新一篇: OPENCV的介绍

    昨天写代码和老大调了一天,查到问题所在但是没有解决,google,baidu均为找到答案

    废话不说了 看如下代码
    ------------------------------
    //结构定义
    typedef struct _STRU_CUTPICINFO
    {
        string strCPURL;//截图的地址
        string strMName;//素材名称
        STRU_CUTPICINFO()
        {
            strMName = "";
            strCPURL = "";
        };
    }STRU_CUTPICINFO,*LPSTRU_CUTPICINFO;
    typedef std::map<int,STRU_CUTPICINFO>CUTPIC_LIST,*LPCUTPIC_LIST;//int--素材ID

    ---------------------------------
    //填充
    CUTPIC_LIST   m_AdCutPicList;
    m_MapCs.Lock();
    if (AsxMsgInfo.m_AdCutPicList.size() < 3)
    {
    STRU_CUTPICINFO lCPInfo;
    lCPInfo.strCPURL = VideoAdItem.mstrCutPicUrl;
    lCPInfo.strMName = VideoAdItem.strItemName;
    AsxMsgInfo.m_AdCutPicList.insert(make_pair(liAdID,lCPInfo));
    }
    m_MapCs.Unlock();

    --------------------------------------------------
    然后是给控件发送消息
    SendMessage(...,...,(WPARAM)(LPVOID)&m_AdCutPicList,...);

    ---------------------------
    收到消息后
    CUTPIC_LIST* mpCpList = (CUTPICLIST*)(LPVOID)aParam; //这里aParam是map结构的地址
    CUTPIC_LIST::iterator itr = mpCpList->begin();
    while(itr != mpCpList->end())
    {
    int iID= itr->first;
    string strURL= itr->second.strCPURL;
    string  strName = itr->second.strMName;
    ++itr;
    }

    好了,来说说错误的地方,while循环里面,第一轮可以把数据读出来,迭代器自增以后,
    发现迭代器指向空位置,内存泄露,查了很多资料,问题没办法解决,
    最后把map换成了vector,解决了这个怪异的问题,难道map的iterator使用有某种限制或者规则?
    望碰到过这个问题的朋友帮忙看看问题出在哪里

    发表于 @ 2007年09月27日 10:00:00|评论(loading...)|编辑

    旧一篇: 一个小马框架

    评论

    #wang 发表于2008-03-26 10:08:49  IP: 221.239.71.*
    我也遇到了类似问题。
    #wang 发表于2008-03-26 10:10:28  IP: 221.239.71.*
    我是向dll中传一个map指针,结果也是it++之后就内存泄漏
    #freshbug 发表于2008-03-26 11:22:13  IP: 210.51.52.*
    stl里面有一些静态变量 不能跨dll vector有时候能跨dll是因为连续的内存分布

    跨模块传输数据最好是能用C风格的结构 用C++类很容易出问题
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © freshbug