可视化C++ malloc 实现



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

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

我想知道视觉C++采用哪个版本的实现?还是VC++团队只是实现了自己的版本?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新