瞎扯淡 一个堆栈里的堆栈溢出了,会怎样?

zzz6519003 · July 25, 2019 · Last by crosspass replied at July 25, 2019 · 2322 hits

~

写个递归调用就明白了

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

You need to Sign in before reply, if you don't have an account, please Sign up first.