当前位置: 首页 > 面试题库 >

有什么方法可以在运行时确定可用的堆栈空间吗?

赵光赫
2023-03-14
问题内容

我知道堆栈大小是固定的。因此,我们不能将大对象存储在堆栈上,而是转向动态分配(例如malloc)。另外,在函数调用嵌套时会使用堆栈,因此我们也避免使用递归函数。在运行时是否有任何方法可以确定到目前为止已使用了多少堆栈内存,还剩下多少?

在这里,我假设Linux环境(gcc编译器)具有x86体系结构。


问题答案:

只需阅读%esp,并记住其值就会下降。您已经从环境中知道了默认的最大大小,以及线程的起点。

gcc具有出色的装配支持,这与某些薄片不同。



 类似资料:
  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 问题内容: 我想知道是否可以在运行时设置注释变量? 问题答案: 不,那不可能。 注释以常量值的形式存储在类文件中,并且无法在运行时进行计算。 您能做的最好的事情就是存储有关如何计算值的某种“指令”。 例如,您可以使用某种脚本语言存储一个简单的表达式,然后在读取注释值时执行该表达式,或者可以指定要获取真实值的调用方法的名称。

  • 问题内容: 根据设计,每次运行新测试时,Selenium都会为您的Firefox配置文件创建一个新副本。我发现此复制时间是一个相当大的瓶颈,尤其是在运行100多个测试时。(5-15秒以重新复制配置文件)。 有谁知道有任何超越行为吗?我希望我的Selenium服务器只重用相同的firefox配置文件。我知道这违反了“干净地设置您的测试装置”的理念,但这是我愿意采取的捷径,因为我的测试不会实质性地改变

  • 问题内容: 在运行JUnit测试时,我似乎总是会遇到此错误: 蚀outOfMemoryError:堆空间 我已经用JConsole监视了Eclipse,并且堆内存的峰值大约为150MB。我已将堆内存设置为1GB。 启动Eclipse时,我使用以下参数: 有谁知道是什么原因导致此问题?它仅在运行JUnit测试时发生。 问题答案: Junit测试在与Eclipse IDE不同的vm中运行。因此,内存不

  • 问题内容: 我有一个使用XML和反射将 s 返回到另一个类的类。 通常,这些对象是外部对象的子字段,但有时我想即时生成它。我已经尝试过类似的方法,但无济于事。我相信这是因为Java不允许你访问进行反射的方法。 如果提供的方法失败,则失败。我可以通过制作方法来解决它,或者制作另一个类来派生它。 长话短说,我只是想知道是否存在一种通过反射访问方法的方法。 问题答案: 你可以使用反射调用私有方法。修改已

  • 问题内容: 据我所知,默认情况下,转到频道的行为就像一个队列,先进先出。有什么方法可以改变它们以先进先出吗? 基本上,我正在执行搜索,并且想对内存限制使用DFS而不是BFS。 问题答案: 不,这是不可能的-通道始终是FIFO。您可以使用package 。