sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
阅读:945回复:2

NK里面用什么函数可以分配一个大的连续的内存,比如2M大的

楼主#
更多 发布于:2007-06-28 19:09
NK里面用什么函数可以分配一个大的连续的内存,比如2M大的?
[url]http://sniper167.bokee.com[/url]
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
沙发#
发布于:2007-06-29 16:39
用文件映射的方法来做吧,就是调用
CreateFileMapping
MapViewOfFile
UnmapViewOfFile
CloseHandle
来实现。
举个例子:
HANDLE hMap;
U8*    pSMem;
hMap    = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, 0x200000, TEXT("Alloc_Huge_Area_Map"));
pSMem   = (U8*)MapViewOfFile(hMap, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 0x200000);
然后就可以操作pSMem指向的2M空间。
用完要释放的话,
UnmapViewOfFile((LPCVOID)pSMem);
CloseHandle(hMap);
想进一步了解文件映射的用法看PB的帮助文档。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-04 08:00
你这连续指的是什么啊?是物理上连续,还是像LocalAlloc得到的地址就行了,
如果是物理上连续,最好保留一块,因为太大,分配可能会失败.
学海无涯
游客

返回顶部