~
写个递归调用就明白了
说下个人的理解:C 语言堆栈的内部数据一般是用数组实现的,C 语言的机制检查数组的下标越界,需要实现堆栈的人自己检查数组是否越界。一般堆栈的数组快占用满了时,会再次向内存申请一个更大长度的数组,一般是原来长度的 x 倍,所以自己用自己检查边界的话一般是不会溢出的。如果没有堆栈的实现者没有检查越界的话,尝试将数据会写到非自己申请的数组的内存中,Linux 的内核好像有写的权限机制,会写失败返回报错。