本文整理汇总了C++中MemoryBlock::Grow方法的典型用法代码示例。如果您正苦于以下问题:C++ MemoryBlock::Grow方法的具体用法?C++ MemoryBlock::Grow怎么用?C++ MemoryBlock::Grow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemoryBlock
的用法示例。
在下文中一共展示了MemoryBlock::Grow方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ClaimHandle
MHANDLE ClaimHandle( ADDR Address )
{
// Need to scan along the list of handles to find an unused one
if (HandlesInUse == (ElementsInHandleTable-1))
{
// we have run out of handles
TRACEUSER( "Rik", wxT("ClaimHandle - No more handles available. Trying to get some more\n") );
// First off we had better try to extend our allocation of memory to the table
// If it fails, return saying there are no more handles left!
if (!HandlesMemory.Grow(HandleTableTotalSize,
HandleTableTotalSize+HandleTableByteSize, (LPVOID*)&HandlesTable ))
{
TRACE( wxT("ClaimHandle - Failed to get more handles!!!! P A N I C\n") );
return BAD_MHANDLE;
}
// grew handle table OK, Set all the new bits of mem to defaults
for (INT32 i=0; i<HandleTableSize; i++)
HandlesTable[ElementsInHandleTable+i].Address = PBYTE(BAD_MHANDLE);
// increase the counters
HandleTableTotalSize += HandleTableByteSize;
ElementsInHandleTable += HandleTableSize;
}
// Ok, we must have some handles by now, so lets try and find one
UINT32 Handle = ElementsInHandleTable - 1;
while (Handle>0)
{
if (HandlesTable[Handle].Address == BAD_MHANDLE )
{
// Store the Addr
HandlesTable[Handle].Address = Address;
HandlesInUse ++;
// if we are using unique IDs, do this
#ifdef USE_UNIQUE_IDS
// Using Unique IDS, so get the next id and store it away
WORD UniqueID = CurrUniqueId++;
HandlesTable[ Handle ].UniqueID = UniqueID;
return MAKEINT32( Handle, UniqueID );
#else
// TRACEUSER("Gerry", _T("ClaimHandle - %d"), Handle);
return Handle;
#endif
}
Handle --;
}
// Should never get here
ENSURE( FALSE, "ClaimHandle: We Should never have reached this bit!" );
return BAD_MHANDLE;
}