您的位置:首页 > 其它

HeapAlloc与malloc的区别

2015-06-08 18:31 246 查看
malloc是在CRT的内存堆上分配的,这个堆的存在一般来说你是不会关心的

HeapAlloc则不同,你需要给它指定你想从哪个堆上分配,而这个堆是从HeapCreate创建出来的

HeapAlloc大多是用于自己管理堆的情况

malloc可以移植是因为在不同的操作系统上有各自的实现,而所有平台上就叫这个名字。比如在Widnows上,VC中调用malloc时,其实在malloc内部就是通过调用Windows API HeapAlloc在指定的堆上分配内存的,而C++ Builder中调用malloc,其实在malloc内部调用AirtualAlloc,所以不同的编译器也有不同的实现,

但都是以OS的API为基础的,所以你的问题的回答其实是调用与被调用的关系.

malloc(); 和 HeapAlloc(); 都是从堆中分配相应的内存

不同的是一个是c run time的函数 一个是windows系统的函数

这么说你应该可以想到 对于windows程序来说 使用HeapAlloc();会比malloc();效率稍稍高一些

实际也是这样的 其实有许多crt的函数 ms在win中都提供了相似功能的系统函数

HeapAlloc和malloc的区别在于他们属于不同的函数库。前者属于平台sdk,后者则是标准库。

两个函数在分配空间时都是分配在堆中,实现结果也有细微差别。如malloc分配的实际空间可能比你指定的多些
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: