栈的应用习惯

  • 零碎在应用栈开拓内存空间时,是先应用高地址处的空间,而后在应用低地址处的空间。
  • 数组、函数传参等,开拓内存空间时,都是从右到左顺次开拓的。
//下列这个程序会死循环int main(){    int i = 0;    //先在栈的高地址开拓b的空间,    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };     //而后在低地址开拓arr的空间(先开拓10的空间,而后再是9、8 ....)    for (i = 0; i <= 12; i++)    {        arr[i] = 0;        printf("hehehe\n");    }    return 0;}//上述程序中,for循环中  arr[i] 的拜访溢出了(越界拜访),溢出到arr[12]的地址//然而arr[12]的地址可能与变量 i 重合了//所以给arr[12]的地址赋值为0,同时也会把变量 i 也赋值为0

栈中内存构造如下: