摘要: 前两天在朋友的QQ空间上看到一个函数,如下:void foo(){ int a[4]; int i; for (i = 0; i <= 4; i++) { a[i] = 0; } }朋友说这个函数里会陷入死循环。我看了下,除了数组越界问题,其它没看出有什么问题。后来果断敲代码用GCC编译运行一下,发现并不像他说得那样。于是我找他讨论,他说没道理啊,在他那确实陷入死循环了。我想这应该是跟编译环境有关,可是,在什么情况下它会陷入死循环呢?我很疑惑,在听到朋友说到程序是用堆栈存放数据的,我突然想起APUE上面讲过的程序存储空间布局。于是,立马翻到那一... 阅读全文