首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual-C++ malloc实现?

Visual-C++ malloc实现?
EN

Stack Overflow用户
提问于 2012-05-12 21:01:02
回答 1查看 2K关注 0票数 5

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 04:47:37

如果在没有编写自己的重定向器的情况下,在VC++编译的程序中调用mallocnew,那么最终的结果是HeapAlloc,这也称为NT堆。

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

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

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10563965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档