c++ - Visual-C++ malloc 实现?

标签 c++ visual-c++ malloc

我目前正在研究我的家庭作业的malloc 实现。

我知道存在一些版本的 malloc 实现,例如 ptmalloc,由 glibc 使用, 和 jemalloc,由 FreeBSD 使用。

请问visual C++采用的是哪个版本的实现? 或者 VC++ 团队刚刚实现了他们自己的版本?

最佳答案

当你在 VC++ 编译的程序中调用 mallocnew 而没有编写你自己的重定向器时,你最终会进入 HeapAlloc,这也是众所周知的作为 NT 堆。

NT Heap 由 Windows 内存团队开发。这些人负责操作系统中的所有内存管理。他们为用户态进程分配虚拟空间;他们处理驱动程序的内存等。同一个团队为应用程序代码中的小分配提供代码是合乎逻辑的。根据我的经验,NT 堆是个好东西。它没有任何重大缺陷。当您有非常具体的要求时,其他一些分配器可能会表现更好。一般情况下,NT 堆是正确的起点。它很可能会满足您的需求。

请注意,VC++ 是一个编译器。它创建一个在操作系统控制下运行的可执行文件。谈论任何“VC++执行环境”都是不正确的。

尽管如此,我知道编译器本身在编译代码时并没有使用 NT 堆。他们使用自己的分配器。我不知道他们这样做的确切原因。

关于c++ - Visual-C++ malloc 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10563965/

相关文章:

user-interface - 将 GUI 集成到控制台应用程序中

c++ - 文件错误意外结束

C 指针 "type ** name"与 "type * name[]"作为参数

c - malloc创建二维数组时内存是怎么分配的?

linux - malloc_stats和/proc/pid/stat的相关性

C++ - 错误 E2285 : Could not find a match for 'tolower(char *)' in function parseInput(fstream &)

c++ - 包装器是从 strcat_s() 到 strcat() 吗?如果没有,是否可以创建一个?

c++ - 增量增长元组

c++ - 通过 OpenGL 进行图像缩放(KeepAspectRatioByExpanding)

c++ - MSVC : explicit template instantiation fails while implicit instantiation succeeds