为什么要使用 GlobalAlloc 分配内存它与 new 有什么区别,GlobalLock 的功能仅仅是返回指向内存的指针吗?

解决方案 »

  1.   


    learn and attention and up
      

  2.   

    new 和类型相关
    GlobalAlloc 只是分配内存块,而且可以lock可以unlocc
      

  3.   

    在16位Windows中,GlobalAlloc从Task的公共内存区(该内存区为所有Task共享)分配指定大小的内存块,一些API要求传递的内存块必须是公共内存块。GlobalAlloc分配的内存块指针必须通过GlobalLock得到。在32位Windows中没有公共内存区和局部内存区的区别,进程具有独立的4GB地址区,GlobalAlloc与HeapAlloc没有什么区别,甚至这样使用也是合法的:LPVOID lpvData = (LPVOID)GlobalAlloc(GPTR, 512);
      

  4.   

    是的,提供GlobalAlloc是为了使win32和win16兼容!!!另外,该函数返回值使一个句柄,需要用GlobalLock来转为指针楼上说得很详细了
      

  5.   

    感觉 VC 中有很多函数和操作符功能相似,他们的区别我有些胡涂。
    new 除了可以引发构造函数和类型相关外,可否用 new 取代 HeapAlloc,
    他们在效率和内存分配方式上有什么不同吗?
      

  6.   

    好象new和malloc等,都是通过调用HeapAlloc实现的