none
如何在VC++ 中申请一个约500M的缓存来储存多副图像数据? RRS feed

  • 问题

  • 我现在需要用VC图像采集,采集大概200幅图像,采集完成后进行保存图像,但是不知道怎么申请这么大的内存,请大家帮帮忙啊!
    2013年12月4日 2:02

答案

  • 1,unsigned char * buff = new unsigned char [500*1024*1024];

    2,unsigned char * buff = (unsigned char *)malloc(500*1024*1024);

    3,

    SYSTEM_INFO si;
    ::GetSystemInfo(&si);

    size_t nPageSize = si.dwPageSize;

    size_t nBytes = 500*1024*1024;

    size_t nPages = (nBytes % nPageSize) == 0 ? nBytes / nPageSize : (nBytes / nPageSize) + 1;

    size_t nBytesNew = nPages * nPageSize; // 注意没有做溢出处理。

    unsigned char * buff = (unsigned char *)::VirtualAlloc(NULL, nBytesNew, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

    2013年12月4日 2:15