gpt4 book ai didi

c++ - 数组缓冲区溢出

转载 作者:行者123 更新时间:2023-11-28 00:43:12 25 4
gpt4 key购买 nike

我一直在研究缓冲区

#include <iostream>

using namespace std;

int main()
{
char input[3];
for(int i=0;i<100;i++){
cin>>input[i];
}
return 0;
}

程序不停地运行,没有溢出的迹象(在 2 个 linux 机器上测试过)

如果我交换也会发生同样的情况:

cin>>input[i];

与:

input[i]='a';

最佳答案

那是缓冲区溢出,不是堆栈溢出。该代码会破坏堆栈,但如果幸运的话,您可能会看到访问冲突崩溃。它不会触发堆栈溢出,堆栈溢出只会在您调用太多函数时发生——通常是通过递归。

void f()
{
f(); // <-- stack overflow sure to happen
}

如果您正在寻找某事发生,则无法保证一定会发生。写入数组末尾是未定义的行为。如果系统检测到你在做什么,它几乎肯定会让你崩溃,但如果你只是覆盖实际上确实属于你的进程的内存,它可能不会发生,直到你写到最后为止。

关于c++ - 数组缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756341/

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