C++ qsort是否使用堆内存?

C++ qsort是否使用堆内存?,c++,visual-studio,memory,qsort,C++,Visual Studio,Memory,Qsort,在VS2008中使用qsort的stdlib实现 qsort的这个实现是否使用堆上的内存?还是只使用基于堆栈的内存?快速排序是一种就地排序算法。除了运行时堆栈上用于递归调用的空间外,它不使用任何内存。快速排序是一种就地排序算法。除了运行时堆栈上用于递归调用的空间外,它不使用任何内存。如您所见,它根本不在堆上分配内存。如您所见,它根本不在堆上分配内存。它使用什么和不使用什么是一个实现细节。该语言的规范并未对此问题提供任何答案 但是可以说,没有理由使用动态内存来实现合理的qsort。qsort中正确

在VS2008中使用qsort的stdlib实现


qsort的这个实现是否使用堆上的内存?还是只使用基于堆栈的内存?

快速排序是一种就地排序算法。除了运行时堆栈上用于递归调用的空间外,它不使用任何内存。

快速排序是一种就地排序算法。除了运行时堆栈上用于递归调用的空间外,它不使用任何内存。

如您所见,它根本不在堆上分配内存。

如您所见,它根本不在堆上分配内存。

它使用什么和不使用什么是一个实现细节。该语言的规范并未对此问题提供任何答案


但是可以说,没有理由使用动态内存来实现合理的qsort。qsort中正确实现的递归计划永远不会要求递归深度大于给定平台上最大数组大小的log2。这意味着,例如,在平面内存平台上,递归深度不会超过平台的位数,例如,在32位平台上,递归深度不超过32位。这反过来意味着qsort很容易允许完全基于堆栈的实现。

它使用什么和不使用什么是实现细节。该语言的规范并未对此问题提供任何答案


但是可以说,没有理由使用动态内存来实现合理的qsort。qsort中正确实现的递归计划永远不会要求递归深度大于给定平台上最大数组大小的log2。这意味着,例如,在平面内存平台上,递归深度不会超过平台的位数,例如,在32位平台上,递归深度不超过32位。这反过来意味着qsort很容易允许完全基于堆栈的实现。

std::sort有什么问题吗?那也没问题。问题仍然存在。我不需要快速排序,只需要不使用堆内存的排序。如果您不知道,VC++附带了运行时库的源代码,但大多数浮点例程除外,但您可能需要在安装/重新安装过程中选中某些复选框才能获得它。如果您想知道实现的细节,通常可以很容易地在那里找到答案。std::sort有什么问题吗?那也很好。问题仍然存在。我不需要快速排序,只需要不使用堆内存的排序。如果您不知道,VC++附带了运行时库的源代码,但大多数浮点例程除外,但您可能需要在安装/重新安装过程中选中某些复选框才能获得它。如果您想了解实现的详细信息,通常可以在那里找到答案。链接到其他两个实现并不能回答有关VC++实现的问题。链接到其他两个实现并不能回答有关VC++实现的问题。请记住,使用快速排序算法——尽管我认为大多数使用的是它的一些变体。例如,glibc的文档提到:此库中qsort的实现可能不是就地排序,因此可能会使用额外的内存来存储阵列。请记住,qsort不需要使用快速排序算法,尽管我认为大多数使用它的一些变体。例如,glibc的文档提到:该库中qsort的实现可能不是就地排序,因此可能会使用额外的内存来存储数组