|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 neuniuniu 于 2015-9-11 13:31 编辑
如题C代码,
- while ( 1 )
- {
- iPageFreeIndex = 0;
- bReturn = AllocateUserPhysicalPages( GetCurrentProcess(), &NumberToBeAllocTemp, PageArrayAlloc );
- if ( !bReturn )
- {
- goto Error;
- }
- for ( i = 0; i < NumberToBeAllocTemp; i++ )
- {
- if ( PageArrayAlloc[i]*4096 > 0xffffffff && bBreak == FALSE )//2015.9.8
- {
- pXILINXPCIEDma->DataPageArray[iPageAllocIndex] = PageArrayAlloc[i];
- iPageAllocIndex++;
- if ( iPageAllocIndex == pXILINXPCIEDma->DataPagesNum )
- {
- bBreak = TRUE ;
- }
- }
- else
- {
- PageArrayFree[iPageFreeIndex] = PageArrayAlloc[i];
- iPageFreeIndex++;
- }
- }
- NumberToBeFree = iPageFreeIndex;
- FreeUserPhysicalPages( GetCurrentProcess(), &NumberToBeFree, PageArrayFree );
- if ( bBreak )
- {
- break;
- }
- }
复制代码
开发环境:64位win7,8G内存,VS2010
请教各位大神红色代码(第12行)的意义,开辟内存直接使用AllocateUserPhysicalPages函数不是就可以了么?如果为了分配在高地址区,那为什么乘以4096,8192或更大不行么? |
|