• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            focus on linux, c/c++, lua

            記一個(gè)小bug

            在游戲過程中,我會(huì)把房間內(nèi)的玩家列表push到一個(gè)vector中,而且當(dāng)前玩家player的信息始終放在該vector的第一個(gè)位置。
            為了以后能快速的獲取到自己的信息,我做了這樣一個(gè)處理:
            CPlayer* p = &m_vecPlayer[0];
            這樣的話,以后自己的信息不斷的更新,我直接取到內(nèi)存的內(nèi)容即可。
            隨著玩家的不停進(jìn)出房間,也就是vector不停的push和erase,在其中再次獲取p的時(shí)候,發(fā)現(xiàn)它已經(jīng)是一個(gè)野指針了,仔細(xì)分析一下,
            問題很明顯,因?yàn)樵趘ector做Push操作的時(shí)候,當(dāng)容量大于一定的容量時(shí)候,vector會(huì)做一次重新申請(qǐng)內(nèi)存,以及全拷貝的過程,這樣
            p指向的地址肯定就是非法地址了,解決這個(gè)問題也很好辦,只要能獲得到該vector的地址即可,然后再去定位首個(gè)元素內(nèi)容,其實(shí)和
            每次去直接獲取m_vecPlayer[0]的效果是一樣的。我感覺利用CPlayer** p = &&m_vecPlayer[0]的做法應(yīng)該是不靠譜的,因?yàn)榈谝粋€(gè)
            地址的地址,并不一定是vector的地址,畢竟vector還有其他的信息,比如容量,等。有時(shí)間可以寫代碼驗(yàn)證一下。

            posted on 2014-09-25 14:07 zuhd 閱讀(2887) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c/c++

            无码乱码观看精品久久| 欧美国产精品久久高清| 99久久精品免费看国产一区二区三区 | 亚洲精品乱码久久久久久蜜桃图片| 热综合一本伊人久久精品 | 亚洲人成电影网站久久| 久久婷婷成人综合色综合| 欧美日韩中文字幕久久伊人| 久久久久久国产精品美女| 久久精品国产亚洲77777| 久久久久久久国产免费看| 影音先锋女人AV鲁色资源网久久 | 欧美精品九九99久久在观看| 久久久国产精品亚洲一区| 久久强奷乱码老熟女网站| 97久久国产亚洲精品超碰热 | 亚洲精品乱码久久久久久蜜桃| 国产精品久久久福利| 欧美久久一级内射wwwwww.| www性久久久com| 久久ZYZ资源站无码中文动漫| 青青草国产97免久久费观看| 精品久久久久久无码专区| 久久国产亚洲精品| 欧美久久综合九色综合| 91精品婷婷国产综合久久 | 亚洲国产精品高清久久久| 欧洲性大片xxxxx久久久| 久久国产免费直播| 国产精品成人精品久久久| 青青热久久综合网伊人| 久久w5ww成w人免费| 久久国产欧美日韩精品免费| 久久精品国产精品亚洲人人| 国产99精品久久| 国产精品久久久久久福利69堂| 久久精品蜜芽亚洲国产AV| 久久精品国产亚洲77777| 99久久综合狠狠综合久久止| 久久电影网2021| 久久久久亚洲AV无码专区网站|