数组成员的值变化不合逻辑

当我声明一个数组时,我注意到了

int arr[10]; 

过了一会儿,虽然在一段时间内没有任何影响,但数组成员的值会发生变化。 然后我用“新”动态分配,问题解决了。 我认为一切都应该动态声明。 但这不应该是真的。 什么是合乎逻辑的原因?

原因可能有多少:

  • 如果数组成员位于本地存储上,则初始化它,如果不存在则包含任何随机值。
  • 您可能会覆盖同一函数中某些其他数组的边界,从而破坏堆栈和数组。
  • 你以某种神奇的方式破坏堆栈。