在试图确定是在堆栈还是堆上分配内存时,没有发生堆栈溢出
Stackoverflow not happening while trying to figure out if memory is being allocated on stack or heap
我想尝试一个更复杂的例子,在对象中用new分配内存,并在对象内部进一步分配,但需要确定何时会发生stackoverflow。所以决定试试这个例子。我从main()
调用了foo()
函数,并期望它给出stackerflow错误。它没有。在foo中,我将数组大小增加了几个零,并在foo添加了40个这样的数组声明。仍然没有崩溃
我使用的是gcc版本4.4.2 20091027(Red Hat 4.4.2-7)(gcc)。大约超过1MB的堆栈分配不应该产生堆栈溢出错误吗?
void foo()
{
double x[100000000];
double x1[100000000];
double x2[100000000];
double x3[100000000];
double x4[100000000];
//...and many more
}
int main()
{
foo();
}
编译为gcc-o测试test.c
递归地调用foo本身,每次调用都有一些计数器增量。你很快就会明白你的错。
尝试在没有优化的情况下使用-o 编译
相关文章:
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的 int main() 中出现堆栈溢出错误
- C++ 对象数组堆栈溢出
- 有没有一种方法可以捕获进程中的堆栈溢出?C++Linux
- 对象接收堆栈溢出异常 c++ 的排序向量
- 将公共递归转换为尾递归,因为大型输入的堆栈溢出
- C++ 中递归期间的堆栈溢出
- 启动 dll 时 C# 环境堆栈溢出
- 在C++中使用数组时如何防止堆栈溢出?
- 如何修复递归函数导致的堆栈溢出错误?C++
- 当我尝试为结构分配新指针时出现堆栈溢出错误
- 为什么析构函数无休止地调用自己(导致堆栈溢出)?
- 为什么堆栈溢出?如有建议,不胜感激
- 主函数执行时C++堆栈溢出异常
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 我正在尝试使用回溯来解决 N queen 问题,但在编译时它会给出运行时错误(动态堆栈缓冲区溢出)
- 如何在Windows上报告堆栈缓冲区溢出
- 如何抑制来自 gcc 中地址清理器的堆栈缓冲区溢出
- 声明大数组时堆栈/堆溢出
- c++中栈溢出和分段错误的危险