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分配的实际空间可能比你指定的多些
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分配的实际空间可能比你指定的多些
相关文章推荐
- Redis 起步
- 错误error LNK2019: 无法解析的外部符号 _auxDIBImageLoadW@4
- [迅为开发板资料分享]分享一个迅为4412开发板OTG烧录批处理文件
- window下BitCoin的编译
- PHP学习之[第02讲]PHP5.4 Apache Mysql 搭配与多站点配置详解
- Listener介绍
- JVM参数设置、分析
- 虚析构函数
- android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧
- MD5加密以及产生唯一的ID
- Android 线性布局(LinearLayout)相关官方文档 - 参考部分
- 解决使用了subList方法之后MPAndroidChart不能显示数据的Bug
- ORA-01438: 值大于为此列指定的允许精度
- 多线程
- 初创团队的精细化分析和Growth Hacking
- Encoding
- 通过建立ssh信任,启动其他客户机的服务
- Centos 防火墙配置
- 遗传算法与TSP问题的MATLAB实现
- 如何修改pdf文件内容