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

zzz6519003 · 2019年07月25日 · 最后由 crosspass 回复于 2019年07月25日 · 707 次阅读

~

共收到 2 条回复

写个递归调用就明白了

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册