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

            兔子的技術博客

            兔子

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

            留言簿(10)

            最新評論

            閱讀排行榜

            評論排行榜

            原文:http://www.wangchao.net.cn/bbsdetail_65784.html

              // 文件名:memcheck.h
              
            // 作者 : Moonwell
              
            // msn : archonzhao@hotmail.com
              
            // 在需要檢測內存越界的地方加上#include "memcheck.h"
              
            // 程序運行過程中,出現內存越界訪問的代碼將會出現中斷#ifndef _MEM_CHECK_H
              #define _MEM_CHECK_H
              
            void * operator new (size_t size)
              {
              
            //創建的頁面個數
              int page_num = (int) ( size / 4096 + 1 );
              
            //偏移量
              size_t offset = page_num * 4096 - size;
              
            //在內存塊的后面創建一個額外的保護頁面,并且將頁面的屬性設置為不可讀寫
              void *= VirtualAlloc(NULL,page_num*4096+1,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
              
            //定位最后一個保護頁面的地址
              void *pchecker = (char *)p + page_num*4096;
              
            //設置最后一頁為不可讀寫
              DWORD old_value;
              VirtualProtect(pchecker,
            4096,PAGE_NOACCESS,&old_value);
              
            return (char *)p + offset;
              }
              
            void operator delete (void *p)
              {
              
            //找到VirtualAlloc時候的起始地址
              p = (char *)p - (size_t)p % 4096;
              VirtualFree(p,
            0,MEM_RELEASE);
              }
              
            #endif
              
            //總共沒有幾行代碼,使用舉例如下:
              #include <windows.h>
              #include 
            "memcheck.h"
              
            int main(int argc,char *argv[])
              {
               
            char * a = new char[12340];
               printf(
            "%c",a[12340]); //程序運行到這里將出現debug中斷
               delete [] a;
               
            return 0;
              }
              
            // 注意:每次new操作,至少會創建比原來多4k的內存,比較耗內存.
            posted on 2009-09-23 09:56 會飛的兔子 閱讀(1471) 評論(0)  編輯 收藏 引用 所屬分類: C++及開發環境
            久久这里只有精品18| 久久久久久A亚洲欧洲AV冫| 热re99久久6国产精品免费| 久久精品人人做人人爽电影| 午夜欧美精品久久久久久久| 久久精品国产精品青草app| 久久久亚洲欧洲日产国码二区 | 色综合合久久天天综合绕视看| 99久久无码一区人妻a黑| 国产福利电影一区二区三区久久老子无码午夜伦不 | 99久久国语露脸精品国产| 国产香蕉97碰碰久久人人| 欧美精品乱码99久久蜜桃| 97久久精品无码一区二区天美| 国内精品久久久久久久涩爱| 午夜天堂av天堂久久久| 久久免费国产精品| 国产精品久久久久aaaa| 欧美久久久久久| AA级片免费看视频久久| 久久精品www人人爽人人| 亚洲欧洲精品成人久久曰影片 | 久久国产高清一区二区三区| 伊人热热久久原色播放www| 久久久中文字幕| 久久精品天天中文字幕人妻| 久久天天躁狠狠躁夜夜2020| 91久久婷婷国产综合精品青草| 国产69精品久久久久APP下载| 久久AAAA片一区二区| 久久久精品国产sm调教网站| 久久亚洲精品无码aⅴ大香 | 思思久久精品在热线热| 青青久久精品国产免费看| 国产精品嫩草影院久久| 麻豆精品久久精品色综合| 精品久久久久久亚洲| 国产精品久久久久9999高清| 久久久国产精品亚洲一区| AV无码久久久久不卡蜜桃| 国内精品人妻无码久久久影院 |