gpt4 book ai didi

c - 可变堆栈大小

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

我的系统(Linux 内核 2.6.32-24)正在实现一个名为地址空间布局随机化 (ASLR) 的功能。 ASLR 似乎改变了堆栈大小:

void f(int n) 
{
printf(" %d ", n);
f(n + 1);
}

int main(...)
{
f(0);
}

显然,如果您执行该程序,您将遇到堆栈溢出。问题是段错误在每次执行时发生在不同的“n”值上。这显然是由 ASLR 引起的(如果禁用它,程序总是以相同的“n”值退出)。

我有两个问题:

  1. 这是否意味着 ASLR 使堆栈大小略微可变?
  2. 如果是这样,您认为这个事实有问题吗?可能是内核错误?

最佳答案

这可能意味着在一种情况下堆栈恰好流入其他分配的 block ,而在另一种情况下,它会越过未分配的地址空间。

关于c - 可变堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360987/

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