2012-01-07 17 views
0

我注意到一次,當我聲明一個數組,值的陣列成員的變化不合邏輯

int arr[10]; 

過一會的陣列成員的值改變時,雖然沒有什麼的期間影響它。 然後我利用「新」的動態分配和問題解決了。我認爲一切都應該動態聲明。但這應該是真的。什麼可能是合乎邏輯的原因?

+0

Google for「fandango on core」 – 2012-01-07 15:36:17

+1

這當然是不可能的。除非您編寫代碼修改它們,否則數組中的值不會被修改。發表剩餘的代碼,並告訴我們你在使用什麼語言。 – 2012-01-07 15:41:13

+0

沒有初始化(或者設置其值),你真的不應該檢查數組的內容。它是[未定義的行爲](http://c2.com/cgi/wiki?UndefinedBehavior)這樣做。 – pmg 2012-01-07 15:48:04

回答

3

可能是原因號:

  • 初始化您的數組成員如果是在本地存儲或包含任何隨機值,如果你沒有。
  • 您可能會覆蓋同一個函數中某個其他數組的邊界,這會破壞堆棧和數組。
  • 你以某種神奇的方式破壞堆棧。
+0

+1:「魔術」對所有SO問題都是很好的答案。 – 2012-01-07 17:12:57

+2

@OliCharlesworth:更正,*「魔術」是所有不顯示任何代碼*的SO問題的好答案。 :) – 2012-01-07 17:18:07