GlobalAlloc的参数为:GMEM_MOVEABLE的时候, 分配的是可移动内存,这里的可移动内存是可以理解为VirtualAlloc的空闲状态呢??(虚拟内存用VirtaulAlloc分配,有三种状态:预定,预定,提交)

解决方案 »

  1.   

    用GlobalAlloc分配的内存是MEM_COMMIT属性的。欢迎指正。#include "stdafx.h"
    #include "windows.h"
    #include "stdlib.h"int main(int argc, char* argv[])
    { for(int i;i<999;i++)
    {
    Sleep(100);
    HGLOBAL a=GlobalAlloc(GMEM_MOVEABLE,0x1000);
    if(NULL==a)
    {
    printf("alloc error");
    return 0;
    } LPVOID b=GlobalLock(a);
    if(NULL==b)
    {
    printf("lock error");
    return 0;
    }
    DWORD OldProtection;
    MEMORY_BASIC_INFORMATION buffer;
    VirtualQuery(a,&buffer,sizeof(MEMORY_BASIC_INFORMATION));

    if(buffer.State==MEM_COMMIT)
    {
    printf("MEM_COMMIT\n");
    }
    if(buffer.State==MEM_FREE)
    { printf("MEM_FREE\n");
    }
    if(buffer.State==MEM_RESERVE)
    {
    printf("MEM_RESERVE\n");
    }
    }
    return 0;
    }
      

  2.   

    GlobalAlloc的参数为:GMEM_MOVEABLE的时候, 分配的是可移动内存可移动内存是指 可以用 GlobalReAlloc 重新调整大小