堆栈有多大,我用了多少
How big is the stack, and how much have I used up?
我有一个应用程序使用java和c++。最新版本似乎在c++部分发生了损坏,我怀疑这可能是由于堆栈溢出引起的。所以我想知道:
- 我有多少堆栈?
- 我用了多少?
是否有一些调用在运行时询问这些?
不是一个完整的答案,但我刚刚发现了GCC的- stack-usage标志。
Android上默认的pthread堆栈大小是1MB。默认的Dalvik堆栈大小要小得多(24 - 32KB),并且Dalvik堆栈不与本机堆栈共享。(在Art中,堆栈是合并的。)
堆栈溢出将导致崩溃,除非您设法写超过4KB保护页。内存的安排不太可能使写掉线程堆栈的末尾会破坏全局变量,但这不是不可能的。
堆栈垃圾更容易完成,但通常只会导致堆栈上的其他内容被冲洗。同样,不可能覆盖全局变量。
这听起来像是失败是确定的,你确定了做垃圾的代码。代码是做什么的?全球持有的价值观(好的和坏的)是什么?知道它被丢弃了什么——一个简单的整数,一个指针,一个随机的垃圾——可以很有启发性。
相关文章:
- 复制列表初始化的隐式转换的等级是多少
- while循环中while循环的时间复杂度是多少
- 如何检查一个c++字符串中有多少相同的字符/数字
- C++有多少类型的循环
- 算法问题:查找从堆栈中弹出的所有序列
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 为什么调用堆栈数组会导致内存泄漏
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 堆栈上的参考用途有多少内存
- 如何使用 vc++ 找出当前线程堆栈上还剩下多少空间
- 一个程序将分配多少堆栈内存
- MPI调用需要多少堆栈空间
- 如何知道堆栈函数消耗了多少
- 使用标准C++库堆栈类时,堆栈的最大大小是多少
- 你可以在堆栈中放入多少数据
- 是否有一种方法可以测量特定函数从堆栈中消耗了多少内存?
- 堆栈有多大,我用了多少
- 如何清除动态数组在c++和多少是在堆栈上