最近,我在接受采访时遇到了这个问题:
我们如何确定特定函数在堆栈上消耗了多少存储空间?
最佳答案
众所周知,“堆栈”是平台的一个实现细节,无法从语言本身内部检查或以任何方式查询。在 C 或 C++ 程序的任何部分内,基本上不可能保证是否有可能进行另一个函数调用。 “堆栈大小”,或者更恰本地称为“函数调用和局部变量存储深度”,是语言标准承认其存在但被认为超出范围的实现限制之一。 (例如,对于 C++,请参阅 [implimits],附件 B。)
个别平台可能会提供 API 以允许程序自省(introspection)平台限制,但 C 和 C++ 均未指定这一点或如何实现。
超出实现定义的资源限制会导致未定义的行为,并且您不知道是否会超出限制。
关于c++ - 如何知道堆栈函数消耗了多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27203813/