c++ - 虚函数是否不太可能导致堆栈溢出?

标签 c++ memory embedded virtual-functions

<分区>

在一次采访中,有人问我函数参数是位于栈中还是堆中。我很确定这是作为示例给出的,以说明由于嵌入式内存规模的堆栈溢出风险如何避免递归函数。然而,这似乎是一个棘手的问题,因为我一直在审查虚函数,它允许 dynamic dispatch .

在搜索 SO 之后,似乎普通旧常规函数参数的内存位置取决于实现。

对于虚函数,其他答案几乎都说了同样的话——不能保证虚函数参数是如何在内存中实现的。

所以我想明白:

  1. 运行时函数实现如何以及在何处(堆栈?堆?两者都略知一二?)?

  2. 在对 ABI 所说的内容一无所知的情况下,了解此信息是否有用/是查找此类信息的好地方,还是有更好的地方可以查看?除了规范之外,是否有任何实验数据可以让我们“了解”内存在实践中的平均工作原理?

另外,先发帖问好!

最佳答案

您可以非虚拟地调用虚拟 函数。因此,决定虚拟性的不是函数的定义,而是调用的类型。因此,几乎不可能有不同的约定。

关于c++ - 虚函数是否不太可能导致堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318057/

相关文章:

c++ - 奇怪的十六进制格式

c++ - 错误 : 'cout' : undeclared identifier; though I've included iostream header file in program

c - 为什么 C 宏被截断?

C++、char*、段错误

java - 高效的图像调整大小

IOS图像内存使用

c - 如何在内存中顺序存储可变长度代码?

c - Modbus 主从通信

embedded - STM32引导加载程序不工作

c++ - 不能在 C++ 中为 parking 场 OOP 声明抽象类型的变量