大龙的博客

常用链接

统计

最新评论

HeapAlloc、GlobalAlloc和new等内存分配有什么区别么? --- 转

  GlobalAlloc是标准内存管理函数,标准内存管理函数都是操作进程的默认堆,所以这个函数是从进程的从进程的默认堆中分配内存空间,分配的空间可以是可移动的也可以是不可以移动的。可移动的内存是指windows在需要的时候可以将这个内存移动到另外一个地址  
   
  HeapAllock是堆管理函数,堆管理函数可以操作非默认堆(当然也可以操作默认堆),创建一个堆是用HeapCreate,这个函数返回一个堆句柄,然后可以用在HeapAllock函数中,即从返回的这个堆中申请内存空间,HeapAllock申请的内存只能是不可以移动的  
   
  而new则是c++的标准函数,在windows的vc++编译器中,new在申请内存最终调用的是GlabalAllock,不过new还会调用类的构造函数。  
   
  windows的内存管理除了标准内存管理函数和堆管理函数之外,还有更加底层的虚拟内存管理函数,VirtualAllock就是一个虚拟内存管理函数。

posted on 2009-03-09 11:40 大龙 阅读(1450) 评论(1)  编辑 收藏 引用

评论

# re: HeapAlloc、GlobalAlloc和new等内存分配有什么区别么? --- 转 2011-06-04 20:40 Reader

在具体应用时候,没有区别。但MSDN建议用HeapAllock,GlobalAlloc是过时的API.  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理