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.
有子曰:其為人也孝弟,而好犯上者,鮮矣;不好犯上,而好作亂者,未之有也。君子務本,本立而道生。孝弟也者,其為仁之本與。
--《論語今解·學而第一》
若要達到一個目標,必須循其根本,根本如能確定(本立),那么便容易找出解決的方法(道生)。很多時候就是這樣的道理,遇到一個問題,要追究到底才是,更何況是我們做技術的,記得第一次看見這個“本立道生”的詞的時候是在候捷翻譯的《Inside C++ Object Model》這個是作為他的序言的標題的。其實當你真的了解很多細節的時候你才能真正的體會到技術的魅力,而不是代碼的奴隸!
















如上面的所示,這個class的重載的operator()顯然就是帶有inline的屬性了,這個時候編譯器能做的是在能夠確定對象類型的時候如果這個代碼不是太大(當然還要求你的編譯器內聯選項容許狀態

小提示:如何判斷一個函數調用是否被內聯展開?
方法:1.你當然可以生成匯編,自己去看。2.你可以在調用點設置斷點,看看能不能跟進去?(內聯的debug不能跟進去函數,至少目前我所知道的編譯器是這樣的)。3.當然更多的時候在調用點設置斷點,然后查看匯編代碼才是最權威的,也是比較簡單的方法。
今天跑了一天,一直以來對算法很頭疼,其實真的沒有什么,只是自己很少用它去思考問題而已,人便懶樂,思維便也鈍了。無論今后如何,在哪兒工作,設計,優化都一定要多多考慮,不為了什么,就為了那份巧奪天工的瀟灑。回去的路上第一次發現(也許用注意更合適)一個很流氓的廣告,是我在找地鐵班次的時候看見的,掛在和地鐵標示一樣醒目的地方,廣告上一樣是一串類似于站臺的節點,只是左面的幾乎全是“胃痛”,最右面的是“胃舒服”,中間被一個藥片的符號給隔著。汗顏!!!
——只要能忘記曾經,你就能自由。你就能重生。
傳說中,鳳凰是人世間幸福的使者,每五百年,它就要背負著積累于人世間的所有不快和仇恨恩怨,投身于熊熊烈火中自焚,以生命和美麗的終結換取人世的祥和和幸福。同樣在肉體經受了巨大的痛苦和輪回后它們才能得以更美好的軀體得以重生。這段故事以及它的比喻意義,在佛經中,被稱為“涅磐”。 《涅磐無名論》中的記載如下:“ 無名曰:夫至人空洞無象,而萬物無非我造。會萬物以成己者,其唯圣人乎!何則? 非理不圣,非圣不理,理而為圣者,圣人不異理也。故天帝曰:般若當于何求?善吉曰:般若不可于色中求,亦不離于色中求。又曰:見緣起為見法,見法為見佛,斯則物我不異之效也。所以至人戢玄機于未兆,藏冥運于即化,總六合以鏡心,一去來以成體。古今通,始終通,窮本極末,莫之與二。浩然大均,乃曰涅磐。經曰:不離諸法而得涅磐。又曰:諸法無邊,故菩提無邊,以知涅磐之道,存乎妙契。妙契之致,本乎冥一,然則物不異我,我不異物,物我玄會,歸乎無極,進之弗先,退之弗后,豈容終始于其間哉!天女曰:耆年解脫,亦如何久。”?
翻譯成我們現在的語言:無名者說,達到一定境界的人必有空寂靈昧的體驗,體驗到空境,就不會在意世界萬象的事物,萬物由我心流出,執萬物與我合一,只有圣人能做到!為什么這樣說呢?因為不掌握這個真理就不能成為圣人,反之,不是圣人也不能知道這個真理,正因為掌握了這個真理才成為圣人,所以圣人與真理契合無間,凡是圣人都不能離開這個真理!這正如般若觀照所說的色心不二,相即相離,空即是色,色即是空的不二之理。從緣起法的角度來看,萬法為空,空為萬法,見佛即見法,見法即見空,諸法性空,即成見佛,物我兩忘,不一不異。所以通達空境的圣人總是勘玄機于先兆,隱未來于變化,將東南西北上下六合統攝一心,過去未來同成一體。古來今往都是一樣,窮本極末,沒有二致。將浩浩然物我一心,就是涅磐。這就是佛經里說的“不離諸法而得涅磐”。又因為諸法無邊,故求得解脫也無盡,由是推知,涅磐之道在于保持契會妙理之“妙契”,有了“妙契”,乃知萬法冥然一體的真理。萬物與我沒有本質的差別,我與萬物實質一樣,物與我玄妙會通,無極是它們最后歸宿。涅磐就是進而不前,退而不后,無始無終,終始不在其間!天女說:耆年(舍利弗——引者注)的解脫也無終始。
??? 今天終于離職了,下定決心好久了,出門的那一刻,沒有回頭,也許是來得太突然,總有種莫名的滋味。但是這樣的結局不正是我想要的嗎?一切都拋在了腦后。走在軟件園的小道上,桃花在微風中搖曳著微笑,垂柳在鏡面里憐惜著自己,湖邊的美女石像微笑的向我招手,湖面微波蕩漾,也許這正是暗送秋波的來歷!呵呵 :) 值得駐足嗎?搖搖頭,繼續前進,因為我的眼睛告訴我:春天才剛剛開始!
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿(1)
隨筆檔案
Friend
搜索
最新評論

- 1.?re: 本立道生[未登錄]
- 極端情況下,容器的size很大,inline帶來的performance的提高不可忽視。但是問題問的是仿函數普遍的優點。能保存數據才是標準answer
- --zxx
- 2.?re: 本立道生
- 理解有誤。函數對象可實現函數指針不能實現的功能才是主要的。
- --佚名
- 3.?re: 打算學習算法
- 汗顏的很,細節的地方實在是沒有注意。應該是全排列才對。實在抱歉的很!
- --MicroYang
- 4.?re: 打算學習算法
- permutation
- --Rome
- 5.?re: 打算學習算法[未登錄]
-
呵呵,樓主在注釋里面寫得很清楚啊
"*Description: It uses recursive to enumerate all cases. ” - --Sandy