• <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>
            posts - 9,  comments - 9,  trackbacks - 0
              2010年7月23日

            Normally, the break instruction exception can be triggered in following conditions:

            1.       Hardcode interrupt request, like: __asm int 3 (ASM), System.Diagnostics.Debugger.Break (C#), DebugBreak() (WinAPI).

            2.       OS enable memory runtime check, like Application Verifier can trigger after heap corruption, memory overrun.

            3.       Compiler can have some configuration to decide what should be filled to the uninitialized memory block and end of function(blank area, after retun..).  For example, Microsoft VC complier can fill 0xCC if enable /GZ.  0xCC is actually a opcode of __asm int 3.  So if some error cause the application run into such block, will trigger a break point.

            A quick summary of what Microsoft's compilers use for various bits of unowned/uninitialized memory when compiled for debug mode (support may vary by compiler version):

            Value     Name           Description 

            ------   --------        -------------------------

            0xCD     Clean Memory    Allocated memory via malloc or new but never 

                                     written by the application. 


            0xDD     Dead Memory     Memory that has been released with delete or free. 

                                     Used to detect writing through dangling pointers. 


            0xFD     Fence Memory    Also known as "no mans land." This is used to wrap 

                                     the allocated memory (surrounding it with a fence) 

                                     and is used to detect indexing arrays out of 

                                     bounds or other accesses (especially writes) past

                                     the end (or start) of an allocated block.


            0xCC                     When the code is compiled with the /GZ option,

                                     uninitialized variables are automatically assigned 

                                     to this value (at byte level). 



            // the following magic values are done by the OS, not the C runtime:


            0xAB  (Allocated Block?) Memory allocated by LocalAlloc(). 


            0xBAADF00D Bad Food      Memory allocated by LocalAlloc() with LMEM_FIXED,but 

                                     not yet written to. 


            0xFEEEFEEE               OS fill heap memory, which was marked for usage, 

                                     but wasn't allocated by HeapAlloc() or LocalAlloc(). 

                                     Or that memory just has been freed by HeapFree().

            Disclaimer: the table is from some notes I have lying around - they may not be 100% correct (or coherent).


            As others have noted, one of the key properties of these values is that is a pointer variable with one of these values is dereferenced, it will result in an access violation, since on a standard 32-bit Windows configuration, user mode addresses will not go higher than 0x7fffffff.


            For the related issue, we can use Application Verifier to enable heap page, which can break after memory overrun, heap corruption.


             

             

            posted @ 2010-07-23 16:22 MicroYang 閱讀(2011) | 評論 (0)編輯 收藏
              2007年4月25日
                 摘要: 關于C++的詭異,以及算法學習的開始  閱讀全文
            posted @ 2007-04-25 16:58 MicroYang 閱讀(1499) | 評論 (6)編輯 收藏
              2007年4月18日

            有子曰:其為人也孝弟,而好犯上者,鮮矣;不好犯上,而好作亂者,未之有也。君子務本,本立而道生。孝弟也者,其為仁之本與。

                                                                                                  --《論語今解·學而第一》

             若要達到一個目標,必須循其根本,根本如能確定(本立),那么便容易找出解決的方法(道生)。很多時候就是這樣的道理,遇到一個問題,要追究到底才是,更何況是我們做技術的,記得第一次看見這個“本立道生”的詞的時候是在候捷翻譯的《Inside C++ Object Model》這個是作為他的序言的標題的。其實當你真的了解很多細節的時候你才能真正的體會到技術的魅力,而不是代碼的奴隸!

             前幾天去微軟面試的時候,當時那個主考官問我什么叫overload operator()?以及如何區分它和callback?當時回答的時候,我是這么想的,我是沒有用過這個仿函數啦,但是我知道仿函數是怎么實現的,就是通過重載operator()的方法實現的,而至于callback那么肯定就是通過函數指針去實現了。當時我的第一反應就是可能這個performance算是一個吧,我就這么說了,這個operator()可能是作為inline展開了,節省了函數調用的時間,提高了性能。  但是如果是callback的話,就不可能是作為inline展開了。當時也就這么回答了。主考官給我的回復是這樣的,其實至于performance這一塊來講了,也不是最主要的影響,關鍵的地方在于這個operator()可以保存調用的狀態或標志什么的私有數據,而callback只能用static的變量來取代,但是不好的還是static只能為所有的代碼服務,而overload operator()可以為每一個obj保存私有數據部分。他說了,對的,顯然他說的是沒錯。但是當時心中還是對他關于performance的回答有點疑慮,當時由于是在面試,也沒有多想下去,后來仔細想來,其實最關鍵的還是這個performance,眾所周知,如果一個class member function可以作成inline的屬性的,當然編譯器有權利決定在調用點是否內聯展開,其實在大多數的情況下面,試想如下的代碼情況:
             
            Class Compare
            {
            public:
                bool operator (
            int iFrst, int iSecond) const
               
            {
                
            // Do some thing
                return false// Or true
               
            }

            };


            // SortList(List& list, int iSize, const Compare& compareObj)
            SortList(list, 1000, com);

            如上面的所示,這個class的重載的operator()顯然就是帶有inline的屬性了,這個時候編譯器能做的是在能夠確定對象類型的時候如果這個代碼不是太大(當然還要求你的編譯器內聯選項容許狀態)那么就會在調用點內聯展開。但是如果是callback呢?肯定不是,因為他用到了函數指針,即使是這個函數定義成了inline,這個時候也不會做內聯展開的(這個時候會有生成一個類似全局的函數代碼塊,回掉的指針就指向這個塊,編譯器會維護這個代碼塊的唯一性)。所以,如果要是仿函數要求確保內聯展開的會,要唯一確保的是,代碼中的調用點應該是可以確定類型的,能夠做內聯展開。然后,這個仿函數大多數情況下是沒有多態以及繼承伴隨左右的,所以這個performance是很重要的區別之一,尤其是在你需要處理大量的同類數據的時候,比如上面的這個例子,如果iSize很大,甚至是上萬的,那么這個時候的performance估計差別就會太大了。也許你的CPU頻率更高,但是更多的是可能是這個沒有必要的損失。呵呵。

            小提示:如何判斷一個函數調用是否被內聯展開?
            方法:1.你當然可以生成匯編,自己去看。2.你可以在調用點設置斷點,看看能不能跟進去?(內聯的debug不能跟進去函數,至少目前我所知道的編譯器是這樣的)。3.當然更多的時候在調用點設置斷點,然后查看匯編代碼才是最權威的,也是比較簡單的方法。
            posted @ 2007-04-18 15:30 MicroYang 閱讀(549) | 評論 (2)編輯 收藏
              2007年4月10日
                 摘要: 學習筆記,整理于03/2007  閱讀全文
            posted @ 2007-04-10 12:23 MicroYang 閱讀(343) | 評論 (0)編輯 收藏
              2007年4月6日
            本來是想做成技術類型的博客的,后來發現寫的大多都是些日常生活的感受,這段時間每天都在不斷的面試,準備,瑣碎的事情淹沒了我整理的心緒,不過好像我是在為自己的懶惰找理由哦。今天早上接了一家公司的電話,他們覺得我還可以(其實這個不用他們證明,我本來就可以,哈哈),然后決定給我那個赴微軟的offer,其實薪水給的還是可以的,我也比較傾向這個,但是還是考慮下,做個比較吧,對自己負責,也對公司負責。反正被人家肯定了以后,心情自然不錯,BTW,今天下午還是去微軟面試,不過是另一家的。很擔心被那個前臺認出來哦,換個馬甲先,開玩笑了。不過覺得自己面試還是有不少收獲的。畢竟以前的很多東西自己研究的也還是蠻深的。mark下,預祝自己順利。
            posted @ 2007-04-06 12:38 MicroYang 閱讀(1037) | 評論 (0)編輯 收藏
              2007年4月5日

            今天跑了一天,一直以來對算法很頭疼,其實真的沒有什么,只是自己很少用它去思考問題而已,人便懶樂,思維便也鈍了。無論今后如何,在哪兒工作,設計,優化都一定要多多考慮,不為了什么,就為了那份巧奪天工的瀟灑。回去的路上第一次發現(也許用注意更合適)一個很流氓的廣告,是我在找地鐵班次的時候看見的,掛在和地鐵標示一樣醒目的地方,廣告上一樣是一串類似于站臺的節點,只是左面的幾乎全是“胃痛”,最右面的是“胃舒服”,中間被一個藥片的符號給隔著。汗顏!!!

            posted @ 2007-04-05 21:23 MicroYang 閱讀(200) | 評論 (0)編輯 收藏
              2007年4月2日
                 摘要: 離職有日來,所閱面試題者無數,正所謂,閱題無數,面已成精;簡稱面筋  閱讀全文
            posted @ 2007-04-02 21:27 MicroYang 閱讀(1216) | 評論 (0)編輯 收藏
              2007年3月29日

            ——只要能忘記曾經,你就能自由。你就能重生。

            傳說中,鳳凰是人世間幸福的使者,每五百年,它就要背負著積累于人世間的所有不快和仇恨恩怨,投身于熊熊烈火中自焚,以生命和美麗的終結換取人世的祥和和幸福。同樣在肉體經受了巨大的痛苦和輪回后它們才能得以更美好的軀體得以重生。這段故事以及它的比喻意義,在佛經中,被稱為涅磐。 《涅磐無名論》中的記載如下:無名曰:夫至人空洞無象,而萬物無非我造。會萬物以成己者,其唯圣人乎!何則? 非理不圣,非圣不理,理而為圣者,圣人不異理也。故天帝曰:般若當于何求?善吉曰:般若不可于色中求,亦不離于色中求。又曰:見緣起為見法,見法為見佛,斯則物我不異之效也。所以至人戢玄機于未兆,藏冥運于即化,總六合以鏡心,一去來以成體。古今通,始終通,窮本極末,莫之與二。浩然大均,乃曰涅磐。經曰:不離諸法而得涅磐。又曰:諸法無邊,故菩提無邊,以知涅磐之道,存乎妙契。妙契之致,本乎冥一,然則物不異我,我不異物,物我玄會,歸乎無極,進之弗先,退之弗后,豈容終始于其間哉!天女曰:耆年解脫,亦如何久。”?

            翻譯成我們現在的語言:無名者說,達到一定境界的人必有空寂靈昧的體驗,體驗到空境,就不會在意世界萬象的事物,萬物由我心流出,執萬物與我合一,只有圣人能做到!為什么這樣說呢?因為不掌握這個真理就不能成為圣人,反之,不是圣人也不能知道這個真理,正因為掌握了這個真理才成為圣人,所以圣人與真理契合無間,凡是圣人都不能離開這個真理!這正如般若觀照所說的色心不二,相即相離,空即是色,色即是空的不二之理。從緣起法的角度來看,萬法為空,空為萬法,見佛即見法,見法即見空,諸法性空,即成見佛,物我兩忘,不一不異。所以通達空境的圣人總是勘玄機于先兆,隱未來于變化,將東南西北上下六合統攝一心,過去未來同成一體。古來今往都是一樣,窮本極末,沒有二致。將浩浩然物我一心,就是涅磐。這就是佛經里說的不離諸法而得涅磐。又因為諸法無邊,故求得解脫也無盡,由是推知,涅磐之道在于保持契會妙理之妙契,有了妙契,乃知萬法冥然一體的真理。萬物與我沒有本質的差別,我與萬物實質一樣,物與我玄妙會通,無極是它們最后歸宿。涅磐就是進而不前,退而不后,無始無終,終始不在其間!天女說:耆年(舍利弗——引者注)的解脫也無終始。

            posted @ 2007-03-29 12:25 MicroYang 閱讀(312) | 評論 (0)編輯 收藏
              2007年3月28日

            ??? 今天終于離職了,下定決心好久了,出門的那一刻,沒有回頭,也許是來得太突然,總有種莫名的滋味。但是這樣的結局不正是我想要的嗎?一切都拋在了腦后。走在軟件園的小道上,桃花在微風中搖曳著微笑,垂柳在鏡面里憐惜著自己,湖邊的美女石像微笑的向我招手,湖面微波蕩漾,也許這正是暗送秋波的來歷!呵呵 :) 值得駐足嗎?搖搖頭,繼續前進,因為我的眼睛告訴我:春天才剛剛開始!

            posted @ 2007-03-28 19:19 MicroYang 閱讀(292) | 評論 (1)編輯 收藏
            僅列出標題  
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆檔案

            Friend

            • Catherine
            • 深海羚羊
            • 似雨打芭蕉,似風吹梧桐葉,帶著一絲冰冷,也帶著一絲清新------冰柔語絲

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久人人妻人人爽人人爽| 日韩久久久久中文字幕人妻| 无码人妻精品一区二区三区久久| 午夜欧美精品久久久久久久| 久久综合久久综合久久综合| 亚洲精品久久久www| 国内精品九九久久久精品| 国产一区二区精品久久岳| 一本色道久久88—综合亚洲精品| 天天综合久久久网| 奇米影视7777久久精品人人爽| 精品九九久久国内精品| 久久久久久国产精品美女| 国产 亚洲 欧美 另类 久久| 久久精品青青草原伊人| 免费一级欧美大片久久网| 97久久精品无码一区二区| 久久免费看黄a级毛片| 99久久无码一区人妻| 浪潮AV色综合久久天堂| 亚洲日本久久久午夜精品| 久久激情五月丁香伊人| 麻豆精品久久久一区二区| 久久久久久亚洲精品成人| 亚洲国产精品无码久久一区二区 | 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 婷婷久久综合九色综合九七| 久久精品午夜一区二区福利 | 国产午夜福利精品久久2021| 99久久综合国产精品免费| 久久综合伊人77777| 久久久久这里只有精品| 久久影视综合亚洲| 久久人搡人人玩人妻精品首页| 狠狠精品干练久久久无码中文字幕| 91久久精一区二区三区大全| 久久中文骚妇内射| 久久国产精品久久| 久久综合九色综合精品| 97精品国产91久久久久久| 国产精品美女久久久久网|