lei*_*i_z 4 c++ malloc visual-c++
我正在研究malloc我的作业的实施.
我知道有一些版本的malloc实现,比如glibc使用的ptmalloc和FreeBSD使用的jemalloc.
我想知道Visual C++采用哪种版本的实现?或者VC++团队刚刚实现了自己的版本?
当你打电话malloc或new在VC++编译的程序中没有编写自己的重定向器时,你最终会进入HeapAlloc,这也是NT Heap.
NT Heap由Windows内存团队开发.这些人负责操作系统中的所有内存管理.他们为用户模式进程分配虚拟空间; 它们为驱动程序等处理内存.同一个团队为应用程序代码中的小分配提供代码是合乎逻辑的.根据我的经验,NT堆是一件好事.它没有任何重大缺陷.当您有非常具体的要求时,其他一些分配器可能会表现得更好.一般情况下,NT堆是一个正确的起点.最有可能它会满足您的需求.
请注意,VC++是一个编译器.它创建在操作系统的控制下运行的可执行文件.谈论任何"VC++执行环境"是不正确的.
不过我知道编译器本身在编译代码时没有使用NT堆.他们使用自己的分配器.我不知道为什么他们这样做的确切原因.
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |