gpt4 book ai didi

c - 缓冲区溢出 - 局部变量在堆栈上的顺序

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:30 24 4
gpt4 key购买 nike

<分区>

我对局部变量在堆栈上的排序方式感到很困惑。我知道,(在 Intel x86 上)局部变量在代码中从高地址存储到低地址。很明显,这段代码:

int i = 0;
char buffer[4];
strcpy(buffer, "aaaaaaaaaaaaaaa");
printf("%d", i);

产生这样的东西:

1633771873

i 变量被溢出的缓冲区覆盖。

但是,如果我交换前两行:

char buffer[4];
int i = 0;
strcpy(buffer, "aaaaaaaaaaaaaaa");
printf("%d", i);

输出完全相同。

这怎么可能? i 的地址低于 buffer 的地址,因此缓冲区溢出应该会覆盖其他数据,但不会覆盖 i。还是我遗漏了什么?

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