Visual-C ++ malloc实现?

时间:2012-05-12 13:01:02

标签: c++ visual-c++ malloc

我目前正在研究我的作业malloc实施。

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

我想知道Visual C ++采用哪个版本的实现? 或者VC ++团队刚刚实现了他们自己的版本?

1 个答案:

答案 0 :(得分:7)

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

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

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

然而,我知道编译器本身在编译代码时没有使用NT堆。他们使用自己的分配器。我不知道为什么他们这样做的确切原因。