指標的危險
下面的**有沒有問題?如果有的話,問題在**?
intarray
[array_size];
int*pi;
for(
pi =
&array[0
];pi
<
&array
[array_size];)
有兩個錯誤。對增值後的指標進行解引用時,陣列的第乙個元素並沒有被清零。另外,指標在越過陣列的右邊界以後仍然進行解引用,它將把其他某個記憶體位址的內容清零。
注意pi
在陣列之後立即宣告
。如果編譯器恰好把它放在緊跟陣列後面的記憶體位置,結果將是災難性的。當指標移到陣列後面的那個記憶體位置時,那個最後被清零的記憶體位置就是儲存指標的位置。這個指標(現在變成了零)因此仍然小於
&array
[array_size
],所以迴圈將繼續執行。指標在它被解引用之前增值,所以下乙個被破壞的值就是儲存於記憶體位置4
的變數(假定整型的長度為
4個位元組)。如果硬體沒有捕捉到這個錯誤並終止程式,這個迴圈將快樂地繼續下去,指標在記憶體中歡快地前行,破壞它遇見的所有值。當它再一次到達這個陣列的位置時,就會重複上面這個過程,從而導致乙個微妙的無限迴圈。
出處:《c
和指標》。
kenneth a. reek
著,徐波譯。人民郵電出版社。第
113頁。
指標的危險
long fellow fellow 223323 這樣做是很危險的,因為沒有給fellow賦位址,無法確定fellow所存的是何值,可能是任意值。不管值是什麼,程式都將它解釋為儲存223323的位址。如果fellow的值碰巧為1200,並不是你想要的位址,這中錯誤可能會導致一些最隱匿 最難以跟蹤的...
危險的組合
題意 n個盒子擺放成一排,當有3個以上u擺放在一起的時候,就會有危險,求總共有多少種危險的情況。案例 sample input45 0sample output38 分析 這題思路跟之前發布的不容易事件類似。每放置乙個新的盒子,都對應2種情況 設dp n 當盒子數目為n的情況下,符合要求 出現連續三...
Vista延期的危險
記得中旬的時候,有一天我和朋友在城鐵上聊起vista,我打賭說 vista今年肯定發布不了。當時她不信,現在我贏了。說真的,我現在擔心的不是vista什麼時候發布的問題,而是vista還能不能發布的問題。不知道為什麼,使用vista的時候,我總是有一種它可能隨時崩潰的感覺 有新聞說,vista有60...