为什么要分为两个函数,肯定是有什么不同的地方吧。能区分一下应用场景的不同么? 

解决方案 »

  1.   

    这两个现在应该没有什么区别吧,至于为什么有两个,主要原因还是由于兼容16位windows的原因。按MSDN的说法,新的程序应该用Heap的内存管理函数。
      

  2.   

    GlobalAlloc还有LocalAlloc有这些在16位Windows下是不同,有全局和局部堆之分,在Win32下则没有了,Win32下进程只有一个私有堆,它只能被当前进程访问,其他应用程序不能直接访问该内存空间。所以Win32的全局堆和局部堆都指向缺省的私有堆,你甚至可以使用GlobalAlloc分配,用LocalFree来释放,或者反过来,所以Win32下无需注意Local和Global,其内存的分配都等效于调用HeapAlloc();
      

  3.   

    个人觉得还是有所不同的,GlobalAlloc 可以用于剪贴板的操作,LocalAlloc 和 HeapAlloc 应该不可以的。
      

  4.   

    GlobalAlloc,LocalAlloc这都是16位的遗留产物,为了兼容而保留着,作为内存管理来说,已经不建议使用了。但是GlobalAlloc还被DDE,Clipboard和OLE对象有用。from msdn:Note  The global functions are slower than other memory management functions and do not provide as many features. Therefore, new applications should use the heap functions. However, the global functions are still used with DDE, the clipboard functions, and OLE data objects.
      

  5.   

    GlobalAlloc还有LocalAlloc有这些在16位Windows下是不同,有全局和局部堆之分,在Win32下则没有了,Win32下进程只有一个私有堆,它只能被当前进程访问,其他应用程序不能直接访问该内存空间。所以Win32的全局堆和局部堆都指向缺省的私有堆,你甚至可以使用GlobalAlloc分配,用LocalFree来释放,或者反过来,所以Win32下无需注意Local和Global,其内存的分配都等效于调用HeapAlloc();
      

  6.   

    GlobalAlloc还有LocalAlloc有这些在16位Windows下是不同,有全局和局部堆之分,在Win32下则没有了,Win32下进程只有一个私有堆,它只能被当前进程访问,其他应用程序不能直接访问该内存空间。所以Win32的全局堆和局部堆都指向缺省的私有堆,你甚至可以使用GlobalAlloc分配,用LocalFree来释放,或者反过来,所以Win32下无需注意Local和Global,其内存的分配都等效于调用HeapAlloc();