1

我很好奇为什么大多数本地语言,包括 C、C++ 和 D,都没有定义堆栈溢出行为。是不是因为它需要检测每个堆栈变量分配和函数调用,而这反过来又会使代码变得异常缓慢?即使如此,它至少可以在编译器被提供一些额外的详细调试标志时启用。

我问这个是因为我alloca在编写 C++ 代码时对使用 C99 可变长度数组 (VLA) 和 C 函数感到怀疑。对于一些内存处理密集型算法,这可能会导致显着的加速。

我猜这个问题已经被问过很多次了,但我似乎找不到关于 stackexchange 的相关文章。

4

1 回答 1

0

在我看来,原因是高级语言 - 与汇编程序相反 - 应该尽可能独立于执行程序的硬件。它们为程序员提供了制定问题的方法,但让编译器以最佳方式使用硬件。
所以堆栈的概念是高级程序员不应该打扰的东西,无论机器有多少寄存器,也不管它是否有多核 CPU。

于 2013-04-08T05:24:59.983 回答