当前位置: 首页>>代码示例>>C++>>正文


C++ MemoryBlock::Grow方法代码示例

本文整理汇总了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;
}
开发者ID:Amadiro,项目名称:xara-cairo,代码行数:55,代码来源:handles.cpp


注:本文中的MemoryBlock::Grow方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。