3
堆栈分配在Linux中如何工作?
操作系统是否为堆栈或其他内容保留了固定数量的有效虚拟空间?仅使用大局部变量就能产生堆栈溢出吗? 我写了一个小C程序来测试我的假设。它在X86-64 CentOS 6.5上运行。 #include <string.h> #include <stdio.h> int main() { int n = 10240 * 1024; char a[n]; memset(a, 'x', n); printf("%x\n%x\n", &a[0], &a[n-1]); getchar(); return 0; } 运行程序可以得到&a[0] = f0ceabe0和&a[n-1] = f16eabdf proc映射显示了堆栈: 7ffff0cea000-7ffff16ec000. (10248 * 1024B) 然后我试图增加 n = 11240 * 1024 运行程序可以得到&a[0] = b6b36690和&a[n-1] = b763068f …