c++ - 如何知道堆栈函数消耗了多少?

标签 c++ c stack

最近,我在接受采访时遇到了这个问题:
我们如何确定特定函数在堆栈上消耗了多少存储空间?

最佳答案

众所周知,“堆栈”是平台的一个实现细节,无法从语言本身内部检查或以任何方式查询。在 C 或 C++ 程序的任何部分内,基本上不可能保证是否有可能进行另一个函数调用。 “堆栈大小”,或者更恰本地称为“函数调用和局部变量存储深度”,是语言标准承认其存在但被认为超出范围的实现限制之一。 (例如,对于 C++,请参阅 [implimits],附件 B。)

个别平台可能会提供 API 以允许程序自省(introspection)平台限制,但 C 和 C++ 均未指定这一点或如何实现。

超出实现定义的资源限制会导致未定义的行为,并且您不知道是否会超出限制。

关于c++ - 如何知道堆栈函数消耗了多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27203813/

相关文章:

c++ - 在 xarray 中按索引分配值会分配整个数组

c - 获取数组索引的问题 [C]

java - java 如何删除指向数组中元素的指针

Java Arrays - 数组中的每个元素都保存指向下一个元素的指针

c - 冒泡排序不适用于 C 中的动态内存分配

android - 如何对像whatsapp这样的android通知进行分组?

c++ - 为内存和外部依赖管理重新组织 C++ 代码

c++ - 序列点与运算符优先级

c++ - 从字符串到 Ice::ByteSeq 的转换

c - avr:atmega328p ADC 始终读取最大值