Visual-C++ malloc实现?

lei*_*i_z 4 c++ malloc visual-c++

我正在研究malloc我的作业的实施.

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

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

Kir*_*lev 9

当你打电话mallocnew在VC++编译的程序中没有编写自己的重定向器时,你最终会进入HeapAlloc,这也是NT Heap.

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

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

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