在Windows中,在最新版本的MSVC中,malloc(和C
new
,因为它使用与实际内存分配部分相同的基本原理来实现
new
)
调用
HeapAlloc()
。在其他版本(例如g
mingw)中,C运行时是一个较旧的版本,它的调用方式不像直接调用HeapAlloc
,但是在它的基础上,它仍然指向HeapAlloc
-要找到不同的地方,我们需要返回到Windows 95之前的版本确实具有GlobalAlloc
和LocalAlloc
函数集-但是我认为人们现在不使用16位编译器-至少不是Windows编程。
在Linux中,如果您使用glibc
,则它取决于分配的大小(是调用sbrk
还是mmap
--mmap
(MAP_ANONYMOUS
在标志中)用于更大的分配(超过阈值,我相信在典型的实现中为2MB))