• <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>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            利用任務管理器偵測GDI內存泄露

            轉載自:http://zhanyonhu.blog.163.com/blog/static/1618604420100232033650/


                    打開任務管理器,點擊菜單“查看”——“選擇列”,勾上所有項,“確定”。運行自己的程序,進行各種操作,并查看任務管理器中GDI對象和句柄數的變化。

                    如果在某次可逆操作中,例如,彈出一個對話框,然后關閉,GDI對象或句柄數先增加了,然后減少了,但是總量還是增加了,說明存在內存泄露,GDI對象沒有被及時回收。如果句柄數出現類似情況,則情況復雜很多。

                    接下來,注釋掉某些代碼,編譯運行并繼續觀察,逐步定位導致內存泄露的代碼段。

             

                    實例:

                    某程序運行時,彈出一個窗口,再關閉,GDI對象數目就增加了一個。經過一個多小時的分析,最后定位出問題所在,如下:

             LOGFONT logfont={0};

             GetObject(m_font, 
            sizeof(logfont), &logfont);

             logfont.lfHeight 
            = -MulDiv(size, GetDeviceCaps(::GetDC(NULL), LOGPIXELSY), 72);

             SetFont(
            &logfont);

                    這段代碼是用來改變窗口的字體大小的,size是字體的磅數,但是LOGFONT是按像素計算字體大小的,所以,需要轉換字體的磅數為像素大小。這里只轉換了高度,因為設置字體大小時,只需要高度就可以了。 logfont.lfHeight = -MulDiv(size, GetDeviceCaps(::GetDC(NULL), LOGPIXELSY), 72);  這句代碼是從網上搜索到的、轉換字體磅數為像素大小的代碼,我也沒有去細看,直接copy了一下,畢竟代碼很短,乍一看,真沒什么問題。然而,這里使用了GetDC,這將導致GDI對象增加,所以,應該調用DeleteDC回收,這就是問題所在。

            修改后的代碼為:


             LOGFONT logfont={0};

             GetObject(m_font, 
            sizeof(logfont), &logfont);

             HDC hdc
            =::GetDC(NULL);

             ASSERT(hdc
            !=NULL);

             logfont.lfHeight 
            = -MulDiv(size, GetDeviceCaps(hdc, LOGPIXELSY), 72);

             ::DeleteDC(hdc);

             SetFont(
            &logfont);

            By:zhanyonhu

            posted on 2011-03-09 17:26 楊粼波 閱讀(1605) 評論(0)  編輯 收藏 引用

            国产成人精品久久亚洲| 久久精品视频91| 一本一本久久A久久综合精品| 久久国产精品无码HDAV | 久久人做人爽一区二区三区 | 国产精品免费久久久久久久久| 亚洲成色999久久网站| 国产一区二区三精品久久久无广告| 精品国产一区二区三区久久| 999久久久国产精品| 伊人久久久AV老熟妇色| 岛国搬运www久久| 久久久久久久免费视频| 66精品综合久久久久久久| 一本久道久久综合狠狠躁AV| 久久电影网2021| 久久久无码精品亚洲日韩按摩| 日本高清无卡码一区二区久久 | 色综合久久久久久久久五月| 久久本道伊人久久| 久久狠狠爱亚洲综合影院| 精品久久久久久无码人妻热| 中文字幕无码久久精品青草| 色综合色天天久久婷婷基地| 久久亚洲精品成人AV| 97精品伊人久久大香线蕉| 久久国产精品无码网站| 成人a毛片久久免费播放| 精品久久香蕉国产线看观看亚洲| 亚洲色欲久久久综合网| 久久久久久久综合综合狠狠| 久久99国产综合精品| 久久91精品国产91久| 亚洲精品午夜国产va久久| 国产69精品久久久久9999| 久久99国产精品久久99| 国产综合久久久久久鬼色| 久久精品这里热有精品| 国内精品久久久久久野外| 久久综合九色综合欧美狠狠| 久久99国产精品久久99|