【发布时间】:2017-02-21 20:27:29
【问题描述】:
我假设这个问题取决于操作系统或平台。
它是在我使用端口音频库在 Windows 上编写 C++ 代码时出现的。
它在文档中声明不要在我的回调函数中编写太多将传递给端口音频引擎的代码,因为根据系统,它可以从 ISR 和另一个论坛上的阅读中调用,并指出它可能会导致堆栈溢出。
我不是在这里询问任何特定于端口音频的事情,但我想知道如果在 ISR 中编写的代码多于在主函数中编写的代码,为什么会出现堆栈空间问题。
我希望从回调中调用几个不同的函数。如果这个回调实际上是从 ISR 调用的,那么从 ISR 调用更多函数是否有问题?
当我调用每个函数时,由于每个函数都有自己的最大堆栈大小,这是否会为我提供额外的堆栈空间?我觉得这有点令人困惑。
我一直认为函数和 ISR 可以使用尽可能多的堆栈堆栈空间,直到完整分配的堆栈。这是否意味着主函数比其他函数拥有更大的堆栈部分。
非常感谢。
【问题讨论】:
-
我冒昧地猜测一下,问题可能是在每个单独的回调结束之前您可能会获得很多 ISR,这意味着您将为所有这些 ISR 分配堆栈空间,这可能导致堆栈溢出
标签: c++ c function portaudio isr