我想知道标准库排序算法(例如std :: sort)是否正在使用堆内存进行排序。
有没有可靠的来源如何找出排序算法或任何标准库算法通常使用的是什么类型(堆,堆栈)和多少临时内存?
背景是我考虑将一些标准库算法引入到嵌入式环境中,其中受控的内存使用是至关重要的。 (尤其不应使用堆)。
提前谢谢!
答案 0 :(得分:7)
标准库算法可以使用的内存不是标准规定的,因此实现通常可以按照自己的意愿执行。这包括分配堆内存。
您可以检查某些特定的实现是否提供了您想要的保证,但是,通常,您无法控制实现如何实现其算法。
然而:
背景是我考虑将一些标准库算法引入到嵌入式环境中,其中受控的内存使用是至关重要的。 (尤其不应使用堆)。
实现必须确保其算法按照标准的定义执行它们应该执行的操作。这意味着:如果你有一个支持你的目标环境的C ++编译器,它必须在所述目标平台上做正确的事情,但它实现了这一点。
特别是:如果您的平台没有堆,则任何支持它的实现都不能使用堆。