Tag: 堆栈

什么和堆栈和堆在哪里?

编程语言的书籍解释了值的types是在堆栈上创build的,参考types是在堆上创build的,而不解释这两件事情是什么。 我没有读到这个清楚的解释。 我明白什么是堆栈 ,但是他们在什么地方(真实的计算机内存)? 它们在多大程度上由操作系统或语言运行时控制? 他们的范围是什么? 什么决定了他们每个的大小? 是什么让一个更快?

Python是否优化尾递归?

我有以下一段代码失败,出现以下错误: RuntimeError:超过最大递归深度 我试图重写这个以允许尾递归优化(TCO)。 我相信如果TCO发生,这个代码应该是成功的。 def trisum(n, csum): if n == 0: return csum else: return trisum(n – 1, csum + n) print(trisum(1000, 0)) 我应该得出结论,Python不会做任何类型的TCO,或者我只是需要以不同的方式定义它?

堆栈,静态和堆在C + +

我搜索了,但是我还没有很好地理解这三个概念。 何时必须使用动态分配(在堆中)以及它的真正优势是什么? 什么是静态和堆栈的问题? 我可以编写一个完整的应用程序,而不需要在堆中分配变量吗? 我听说其他语言包含一个“垃圾收集器”,所以你不必担心内存。 垃圾收集器是做什么的? 你可以自己操纵记忆,你不能使用这个垃圾回收器吗? 有人对我说,有了这个声明: int * asafe=new int; 我有一个“指针指针”。 这是什么意思? 它不同于: asafe=new int; ?

哪个更快:堆栈分配或堆分配

这个问题可能听起来相当简单,但这是我和另一位与我合作的开发人员的辩论。 我正在考虑堆栈分配的东西,而不是分配给他们。 他正在跟我说话,看着我的肩膀,说这是没有必要的,因为他们的表现是一样的。 我始终认为堆栈的增长是一个固定的时间,堆分配的性能取决于堆的当前复杂性,以便分配(找到合适大小的空洞)和解除分配(减少空洞以减少分段)如果我没有弄错的话,许多标准库实现在删除期间需要时间来做这件事)。 这让我觉得这可能是非常依赖编译器的东西。 对于这个项目,我特别使用了一个Metrowerks编译器来实现PPC架构。 洞察这个组合将是最有帮助的,但一般来说,对于GCC和MSVC ++,情况如何? 堆分配不是堆栈分配的高性能吗? 有没有区别? 或者差异如此微小,就变成毫无意义的微观优化。