最近在看周长发携带的《VC++图像处理编程》,其中涉及到分配一块内存以存储图像文件中的信息,使用的是 GlobalAlloc 函数,我在网上查了一下,GlobalAlloc 似乎是比较“古老”的一个函数,而且MSDN 上也写着这个函数有点慢,推荐使用 heap 函数。
又查找 heapalloc 函数,发现它分配的内存是不可移动的,不知道适合不适合于这里操作图像数据的场合。
一般分配内存使用的是什么函数呢?

解决方案 »

  1.   

    你需要分配的内存能移动吗?对应用来说关系不大,用new,malloc也都可以,除非你需要HGLOBAL
      

  2.   

    new realloc这两个大概就可以满足了你的需求吧
      

  3.   

    对于分配图像数据之类的,因为数据量比较大,请直接用VirtualAlloc分配虚拟内存页。堆什么相对比较慢,它们适合的是大量零碎的小数据。
    尽量复用分配的内存页,这样无需涉及移动问题。
      

  4.   

    new、realloc都是从堆里分配内存的,其实是对HeapAlloc的封装,比它还慢。而且进程默认堆一般1MB左右。
    从速度上来看。
    VirtualAlloc>HeapAlloc>new
      

  5.   

    图像数据的话那就是 new delete 操作符,用什么函数干嘛?
      

  6.   

    呃,倒不是偏想用windows的函数,只是想了解下着方面的知识