gpt4 book ai didi

c++ - 为什么在访问整数时缓冲区溢出会导致段错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:20 26 4
gpt4 key购买 nike

在从函数 A() 调用函数 B() 期间,B() 分配一个 100 个字符的数组并多次填充它,包括一次用 101 个字符的字符串和一次用 110 个字符的字符串。这是一个明显的错误。

稍后,函数 A() 试图访问完全不相关的 int 变量 i,并发生段错误。

我明白为什么会发生缓冲区溢出,但是为什么我在访问这个整数时会出现段错误?为什么我获取不到垃圾数据?

最佳答案

缓冲区溢出可能会破坏堆栈上先前保存的帧指针版本。当函数返回时,这个损坏的版本被加载到帧指针寄存器中,导致您描述的行为。

Wikipedia's page包含一个数字和定义。

关于c++ - 为什么在访问整数时缓冲区溢出会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1843747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com