亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? malloc.cpp

?? firtext搜索引擎源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

	if (malloc32.pSpy) {
		::pthread_mutex_lock( &mutex );
	    pv = malloc32.pSpy->PreDidAlloc(pv, fSpyed);
	}

	int16_t didAlloc = -1;

	if( malloc32.pSpy ) {
	    didAlloc = malloc32.pSpy->PostDidAlloc(pv, fSpyed, didAlloc);
		::pthread_mutex_unlock( &mutex );
	}
	return didAlloc;
}

/******************************************************************************
 * IMalloc32_HeapMinimize [VTABLE]
 */
void firtex::com::internal::Malloc::HeapMinimize() 
{

	if(malloc32.pSpy ) {
		::pthread_mutex_lock( &mutex );
	    malloc32.pSpy->PreHeapMinimize();
	}

	if(malloc32.pSpy) {
	    malloc32.pSpy->PostHeapMinimize();
		::pthread_mutex_unlock( &mutex );
	}
}

/******************************************************************************
 *	IMallocSpy implementation
 *****************************************************************************/
namespace firtex
{
	namespace com 
	{
		namespace internal 
		{
			class MallocSpy : public IMallocSpy 
			{
			public:
				MallocSpy();
				~MallocSpy();

				FX_STDMETHOD(QueryInterface)(FX_REFIID riid, void** ptr );
				FX_STDMETHOD_(uint32_t,AddRef)();
				FX_STDMETHOD_(uint32_t,Release)();
				FX_STDMETHOD_(uint32_t,PreAlloc)(uint32_t cbRequest);
				FX_STDMETHOD_(void*,PostAlloc)(void __RPC_FAR *pActual);
				FX_STDMETHOD_(void*,PreFree)(void __RPC_FAR *pRequest,bool_t fSpyed);
				FX_STDMETHOD_(void,PostFree)(bool_t fSpyed);
				FX_STDMETHOD_(uint32_t,PreRealloc)(void __RPC_FAR *pRequest,
					uint32_t cbRequest,void __RPC_FAR *__RPC_FAR *ppNewRequest,bool_t fSpyed);
				FX_STDMETHOD_(void*,PostRealloc)(void __RPC_FAR *pActual,bool_t fSpyed);
				FX_STDMETHOD_(void*,PreGetSize)(void __RPC_FAR *pRequest,bool_t fSpyed);
				FX_STDMETHOD_(uint32_t,PostGetSize)(uint32_t cbActual,bool_t fSpyed);
				FX_STDMETHOD_(void*,PreDidAlloc)(void __RPC_FAR *pRequest,bool_t fSpyed);
				FX_STDMETHOD_(int16_t,PostDidAlloc)(void __RPC_FAR *pRequest,bool_t fSpyed,int16_t fActual);
				FX_STDMETHOD_(void,PreHeapMinimize)( void);
				FX_STDMETHOD_(void,PostHeapMinimize)( void);

			private:
				uint32_t ref;	
			};
		}
	}
}



static firtex::com::internal::MallocSpy mallocspy32;

firtex::com::internal::MallocSpy::MallocSpy()
{
	ref = 0;
}

firtex::com::internal::MallocSpy::~MallocSpy()
{
	if ( ref != 0 )
		internal::log_printf( internal::WARN, "(%ld) - Reference count for internal MallocSpy not zero.\n", ref );
}


/******************************************************************************
 *	IMalloc32_QueryInterface	[VTABLE]
 */
firtex::com::FX_HRESULT firtex::com::internal::MallocSpy::QueryInterface(FX_REFIID refiid,void** obj)
{
	if ( FX_IsEqualIID(IUnknown::iid,refiid) ) {
		*obj = static_cast<IUnknown*>(this);
		AddRef();
		return FX_S_OK;
	}
	if ( FX_IsEqualIID(IMallocSpy::iid,refiid) ) {
		*obj = static_cast<IMallocSpy*>(this);
		AddRef();
		return FX_S_OK;
	}
	return FX_E_NOINTERFACE;
}

/******************************************************************************
 *	IMalloc32_AddRef		[VTABLE]
 */
uint32_t firtex::com::internal::MallocSpy::AddRef()
{
	pthread_mutex_lock lock(&mutex);
	return ++ref;
}

/******************************************************************************
 *	IMalloc32_AddRelease		[VTABLE]
 *
 * NOTES
 *   Our MallocSpy is static. If the count reaches 0 we dump the leaks
 */
uint32_t firtex::com::internal::MallocSpy::Release()
{
	pthread_mutex_lock lock(&mutex);
	return --ref;
}

uint32_t firtex::com::internal::MallocSpy::PreAlloc(uint32_t cbRequest)
{
    return cbRequest;
}

void* firtex::com::internal::MallocSpy::PostAlloc(void* pActual)
{
    return pActual;
}

void* firtex::com::internal::MallocSpy::PreFree(void* pRequest, firtex::com::bool_t fSpyed)
{
    return pRequest;
}
void firtex::com::internal::MallocSpy::PostFree(firtex::com::bool_t fSpyed)
{
	// do nothing
}

uint32_t firtex::com::internal::MallocSpy::PreRealloc(void* pRequest, uint32_t cbRequest, void** ppNewRequest, firtex::com::bool_t fSpyed)
{
    *ppNewRequest = pRequest;
    return cbRequest;
}

void* firtex::com::internal::MallocSpy::PostRealloc(void* pActual, firtex::com::bool_t fSpyed)
{
    return pActual;
}

void* firtex::com::internal::MallocSpy::PreGetSize(void* pRequest, firtex::com::bool_t fSpyed)
{
    return pRequest;
}

uint32_t firtex::com::internal::MallocSpy::PostGetSize(uint32_t cbActual, firtex::com::bool_t fSpyed)
{
    return cbActual;
}

void* firtex::com::internal::MallocSpy::PreDidAlloc(void* pRequest, firtex::com::bool_t fSpyed)
{
    return pRequest;
}

int16_t firtex::com::internal::MallocSpy::PostDidAlloc(void* pRequest, firtex::com::bool_t fSpyed, int16_t fActual)
{
    return fActual;
}

void firtex::com::internal::MallocSpy::PreHeapMinimize()
{
	// do nothing
}

void firtex::com::internal::MallocSpy::PostHeapMinimize()
{
	// do nothing
}

static void MallocSpyDumpLeaks() {
	firtex::com::internal::log_printf( firtex::com::internal::ERROR, "leaks: %lu\n", malloc32.SpyedAllocationsLeft);
}

/******************************************************************************
 *		FX_CoGetMalloc	[OLE32.@]
 *
 * RETURNS
 *	The win32 IMalloc
 */
firtex::com::FX_HRESULT firtex::com::FX_CoGetMalloc(uint32_t dwMemContext, firtex::com::IMalloc** lpMalloc)
{
	if ( !lpMalloc ) return FX_E_INVALIDARG;
        *lpMalloc = &malloc32;
        //? malloc32->AddRef();
        return FX_S_OK;
}

/***********************************************************************
 *           FX_CoTaskMemAlloc     [OLE32.@]
 * RETURNS
 * 	pointer to newly allocated block
 */
void* firtex::com::FX_CoTaskMemAlloc(uint32_t size)
{
	return malloc32.Alloc( size );
}
/***********************************************************************
 *           FX_CoTaskMemFree      [OLE32.@]
 */
void firtex::com::FX_CoTaskMemFree(void* ptr)
{
	malloc32.Free( ptr );
}

/***********************************************************************
 *           FX_CoTaskMemRealloc   [OLE32.@]
 * RETURNS
 * 	pointer to newly allocated block
 */
void* firtex::com::FX_CoTaskMemRealloc(void* pvOld, uint32_t size)
{
	return malloc32.Realloc( pvOld, size );
}

/***********************************************************************
 *           FX_CoRegisterMallocSpy        [OLE32.@]
 *
 * NOTES
 *  if a mallocspy is already registered, we can't do it again since
 *  only the spy knows, how to free a memory block
 */
firtex::com::FX_HRESULT firtex::com::FX_CoRegisterMallocSpy(firtex::com::IMallocSpy* pMallocSpy)
{

	/* HACK TO ACTIVATE OUT SPY */
	if ( pMallocSpy == reinterpret_cast<void*>(-1) ) {
		pMallocSpy = &mallocspy32;
	}

	if ( malloc32.pSpy) {
		return FX_CO_E_OBJISREG;
	}
	
	internal::pthread_mutex_lock lock(&mutex);

	IMallocSpy* pSpy = 0;
	FX_HRESULT hr = pMallocSpy->QueryInterface( IMallocSpy::iid, (void**)pSpy ); 
	if ( FX_FAILED(hr) ) return FX_E_INVALIDARG;
	assert( pSpy );
	
	malloc32.pSpy = pSpy;
	return FX_S_OK;
}

/***********************************************************************
 *           FX_CoRevokeMallocSpy  [OLE32.@]
 *
 * NOTES
 *  we can't revoke a malloc spy as long as memory blocks allocated with
 *  the spy are active since only the spy knows how to free them
 */
firtex::com::FX_HRESULT firtex::com::FX_CoRevokeMallocSpy(void)
{
 	internal::pthread_mutex_lock lock(&mutex);
 	
	/* if it's our spy it's time to dump the leaks */
	if ( malloc32.pSpy == &mallocspy32 ) {
	    MallocSpyDumpLeaks();
	}

	if ( malloc32.SpyedAllocationsLeft ) {
	    internal::log_printf( internal::INFO, "SpyReleasePending with %lu allocations left\n", malloc32.SpyedAllocationsLeft);
	    malloc32.SpyReleasePending = true;
	    return FX_E_ACCESSDENIED;

	}
	else if ( malloc32.pSpy ) {
		malloc32.pSpy->Release();
    		malloc32.pSpy = NULL;
        }

	return FX_S_OK;
}

/******************************************************************************
 *		IsValidInterface	[OLE32.@]
 *
 * RETURNS
 *  True, if the passed pointer is a valid interface
 */
/*BOOL WINAPI IsValidInterface(
	LPUNKNOWN punk	// [in] interface to be tested
) {
	return !(
		IsBadReadPtr(punk,4)					||
		IsBadReadPtr(punk->lpVtbl,4)				||
		IsBadReadPtr(punk->lpVtbl->QueryInterface,9)	||
		IsBadCodePtr((FARPROC)punk->lpVtbl->QueryInterface)
	);
}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色倩网站大全免费| 亚洲另类在线一区| 亚洲欧美一区二区不卡| 秋霞成人午夜伦在线观看| 成人精品电影在线观看| 777午夜精品视频在线播放| 国产精品久久三| 久久99精品久久久久久国产越南| 色94色欧美sute亚洲13| 国产午夜亚洲精品理论片色戒 | 欧美又粗又大又爽| 日韩精品一区二区三区四区视频| 亚洲欧洲日产国码二区| 国产麻豆精品theporn| 欧美日韩国产综合久久| 亚洲日韩欧美一区二区在线| 激情综合一区二区三区| 欧美三级午夜理伦三级中视频| 国产三级一区二区| 五月婷婷久久综合| 99久精品国产| 久久网站热最新地址| 亚洲一二三四久久| 99国产精品国产精品毛片| 国产欧美一区二区三区沐欲 | 亚洲精品日产精品乱码不卡| 国产一区亚洲一区| 日韩欧美aaaaaa| 婷婷六月综合亚洲| 欧美三级中文字幕| 亚洲国产成人va在线观看天堂| 日本高清不卡aⅴ免费网站| 专区另类欧美日韩| av中文字幕一区| 亚洲丝袜自拍清纯另类| 99免费精品视频| 亚洲少妇屁股交4| 91麻豆国产在线观看| 亚洲视频图片小说| 色婷婷激情综合| 一区二区三区在线播放| 在线观看亚洲精品| 一区二区高清在线| 欧美精品一级二级| 喷白浆一区二区| 欧美不卡激情三级在线观看| 韩国成人在线视频| 中文在线一区二区| 91视频国产观看| 亚洲成人精品一区| 欧美大白屁股肥臀xxxxxx| 美女视频黄 久久| 国产婷婷色一区二区三区| 国产91精品免费| 亚洲天堂成人网| 欧美福利视频导航| 韩国精品主播一区二区在线观看 | 蜜乳av一区二区| 精品福利av导航| 国产成人av电影| 一区二区三区精品视频| 欧美高清性hdvideosex| 精品一区二区免费| 一区免费观看视频| 欧美视频在线一区二区三区 | 日韩欧美美女一区二区三区| 精品一二线国产| 欧美国产综合一区二区| 色婷婷综合久久久久中文| 免费观看久久久4p| 国产精品久久久久久久蜜臀| 91久久精品一区二区三| 另类欧美日韩国产在线| 国产精品的网站| 正在播放亚洲一区| 不卡电影免费在线播放一区| 亚洲国产精品久久久久秋霞影院| 日韩精品在线一区| 91香蕉视频在线| 国内精品视频666| 一区二区三区在线观看国产| 精品国产免费视频| 在线观看日产精品| 成人少妇影院yyyy| 美女久久久精品| 亚洲一区二区三区影院| 国产亚洲美州欧州综合国| 欧美年轻男男videosbes| 成人一区在线观看| 麻豆高清免费国产一区| 亚洲一区二区不卡免费| 国产校园另类小说区| 欧美一区二区在线不卡| 色婷婷综合在线| 国产成人精品免费网站| 美腿丝袜一区二区三区| 香港成人在线视频| 一区二区三区四区高清精品免费观看 | 日韩欧美www| 欧美色精品在线视频| 99久久久久久99| 国产成人av自拍| 美女被吸乳得到大胸91| 亚洲成人动漫在线观看| 亚洲美女免费在线| 18成人在线观看| 日本一区二区三区久久久久久久久不 | 精品对白一区国产伦| 欧美精品在线观看一区二区| 在线观看精品一区| 色哟哟一区二区在线观看| 成人午夜电影久久影院| 国产激情精品久久久第一区二区| 美女视频黄 久久| 老司机免费视频一区二区三区| 婷婷综合久久一区二区三区| 午夜精彩视频在线观看不卡| 亚洲成人黄色影院| 日本va欧美va欧美va精品| 午夜久久久久久| 日本视频一区二区三区| 蜜臀av一区二区在线免费观看 | 成人免费一区二区三区视频| 国产精品久久久久9999吃药| 欧美国产成人精品| 国产精品久久午夜| 一区在线播放视频| 亚洲综合久久久久| 亚洲成人www| 美女精品自拍一二三四| 久久99最新地址| 国产麻豆9l精品三级站| 成人中文字幕电影| 91香蕉视频污| 欧美日韩黄色影视| 日韩精品一区二区三区三区免费| 欧美mv日韩mv国产网站| 久久老女人爱爱| 中文字幕一区免费在线观看| 亚洲精品国产一区二区三区四区在线 | 美女视频一区二区三区| 极品少妇xxxx精品少妇| 成人午夜免费视频| 在线观看亚洲a| 日韩三级视频在线观看| 久久久久国产成人精品亚洲午夜| 国产精品久久毛片| 亚洲综合精品久久| 久久成人18免费观看| av在线播放一区二区三区| 在线视频欧美区| 欧美mv和日韩mv的网站| 国产精品久久777777| 午夜日韩在线电影| 精品一区二区三区免费播放| bt欧美亚洲午夜电影天堂| 91精品国产乱| 精品裸体舞一区二区三区| 中文字幕一区免费在线观看| 视频一区视频二区中文| 成人18视频日本| 91精品国产综合久久香蕉麻豆| 国产喷白浆一区二区三区| 五月天亚洲婷婷| www..com久久爱| 欧美视频在线一区二区三区 | 偷拍亚洲欧洲综合| 成人sese在线| 欧美一区二区三区在线电影 | 国产精品色噜噜| 日本午夜精品视频在线观看| 成人av在线观| 精品日产卡一卡二卡麻豆| 亚洲在线视频一区| 成人视屏免费看| 精品国产免费久久| 亚洲成人一区二区| 99久久久国产精品| 国产三区在线成人av| 欧美a级理论片| 欧美视频一区在线| 亚洲婷婷在线视频| 成人免费视频网站在线观看| 日韩精品专区在线影院观看| 亚洲成人免费视| caoporen国产精品视频| 久久精品人人做人人爽人人| 日本成人中文字幕在线视频 | 国产成都精品91一区二区三| 一区在线观看视频| 综合久久一区二区三区| 亚洲欧美另类小说| 国产中文一区二区三区| 日韩欧美在线123| 日精品一区二区三区| 色94色欧美sute亚洲13| 亚洲男人的天堂在线观看| 成人av在线一区二区| 亚洲欧洲精品一区二区精品久久久 | 国产精品白丝在线|